??xml version="1.0" encoding="utf-8" standalone="yes"?>漂亮人妻被黑人久久精品,99久久精品日本一区二区免费 ,久久久久久久久久久久久久http://www.shnenglu.com/adaiye/category/5026.htmlIf you think you can, you can!zh-cnThu, 22 May 2008 18:40:30 GMTThu, 22 May 2008 18:40:30 GMT60?NET设计规范?amp;mdash;—学习W记(3) 命名规范http://www.shnenglu.com/adaiye/archive/2007/10/11/33928.htmladaiyeadaiyeThu, 11 Oct 2007 01:22:00 GMThttp://www.shnenglu.com/adaiye/archive/2007/10/11/33928.htmlhttp://www.shnenglu.com/adaiye/comments/33928.htmlhttp://www.shnenglu.com/adaiye/archive/2007/10/11/33928.html#Feedback0http://www.shnenglu.com/adaiye/comments/commentRss/33928.htmlhttp://www.shnenglu.com/adaiye/services/trackbacks/33928.html一l一致的的命名约定对框架的可用性及光要?名字要易于理解,同时必须传达每个元素的功能?/p>

大小写约?/h2>

标识W的大小写规?/p>

PascalCasingQ如HtmlTag  IOStream

camelCasingQ如htmlTag  ioStream

  • 要把PascalCasing用于由多个单词构成的名字I间、类型、以及成员的名字Q?
  • 要把camelCasing用于参数的名字?/li>

通用命名U定

单词的选择

Ҏ架中标识W的名字来说Q很重要的一Ҏ一目了然?/p>

名字的意思清楚比长度短更重要。名字应该与场景、系l的逻辑l成或物理组成以及ؓ人熟知的概念相对应,而不应该与技术或框架相对应?/p>

  • 要ؓ标识W选择易于阅读的名字;
  • 要更看重可读性,而不是更看重短性;
  • 不要使用下划Uѝ连字符以及其他M既非字母也非数字的字W;
  • 不要使用匈牙利命名法Q?
  • 避免使用与广泛用的~程语言的关键字有冲H的标识W?/li>

使用单词~写和首字母~写?/strong>

一般来_不要在标识符中用单词羃写或首字母羃写:宁可名字长一点,也不要别人看不懂?nbsp; 其不要使用未被q泛接受的单词羃写和首字母羃写词?/p>

  • 不要使用~写词或~略词作为标识符名字的一部分
    用GetWindow  不用GetWin
  • 不要使用未被q泛接受的首字母~写?br>多谓q泛接受Q用搜烦引擎在网上搜索该首字母羃写词Q如果返回的前几个结果与期望相符Q那么该首字母羃写词才有资格被称Z所周知?/li>

避免使用语言Ҏ的名?/strong>

  • 要给cd名用语义上有意义的名字Q而不要用特有的关键?br>GetLength比GetInt要好
  • 要用CLR的通用cd名,而不要用语aҎ的别?
  • 要用常见的名字Q比如value或itemQ而不要重复类型的名字

为已有API的新版本命名

当用新类型和新成员接替或取代已有的类型或成员Ӟ如何选择名字Q?/p>

  • 使用与旧API怼的名?
  • 要优先用后~而不是前~来表C已有API的新版本
    q样有助于在览文档或用Intellisense时发现新版本Q按字母排序
  • 可以考虑使用全新但有意义的标识符
  • 要用数字后~来表C已有API的新版本
    有些名字Q或工业标准Q不宜添加后~或改?
  • 不要在标识符中用“Ex”“New”等cM的后~来区分相同API的不同版?
  • 要在引入64位整敎ͼlongQ而非32位整数进行操作的新版本API时用?4”后~Q反之亦然?/li>

E序集和DLL的命?/h2>

E序集是一个部|单元,同时q代表托代码程序的w䆾。虽然程序集可以分布一个或多个文g中,但一般来说一个程序集仅与一个DLL相对应?/p>

名字I间与DLLE序集的区别Q?/p>

名字I间Q一l逻辑实体

DLL和程序集Q打包和部v时的一个单

  • 要ؓE序集和DLL选择提示性的名字Q比如System.DataQ这样很Ҏq道它的大致功能?
  • DLL命名Q?lt;Company>.<Component>.dll

名字I间的命?/h2>

<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]

  • 要用公司名称作ؓ名字I间的前~Q不要用~写
  • 要用E_的与版本无关的品名UC为名字空间的W二?
  • 不要Ҏ公司的组l架构来军_名字I间的层ơ结构,因ؓ公司内部l织的名UC般来说不会持l太长的旉
  • 要用PascalCasing大小写风|q用点号来分隔名字空间的各部分?br>如Microsoft.Office.PowerPoint
  • 考虑适当的时候在名字I间中用复数Ş式?nbsp; 首字母羃写词例外
    System.Collections
    System.IO
  • 不要用相同的名字来命名名字空间与位于该名字空间中的类?br>如:不要名字空间命名ؓDebugQ然后又在该名字I间中提供一个名为Debug的类?/li>

名字I间和类型冲H?/strong>

  • 不要引入太一般化的类型名Q比如Element、Node、Log以及Message?/li>

不同cd的名字空_有不同的规范来避免类型名的冲H:

  • 应用E序模型名字I间Qapplication model namespaceQ?br>属于单个应用E序模型的名字空间经怸起用,但是它们几乎不合属于其他应用E序模型的名字空间一起?br>System.Windows*
    System.UI*
  • 基础设施名字I间Qinfrastructure namespaceQ?br>此类别包含一些在开发常用应用程序时很少会导入的名字I间
  • 核心名字I间Qcore namespaceQ?br>包含了所有的System名字I间Q但应用E序模块名字I间和基设施名字I间除外?nbsp; 包括System、System.IO、System.Xml以及System.Net{等
  • 技术名字空间组Qtechnology namespace groupQ?br>此类别包含所有那些以相同的两个前~Q?lt;Company>.<Technology>*Q开始的名字I间?/li>

cR结构和接口的命?/h2>

一般来说类型名应该是名词词l。如果无法ؓcd扑ֈ一个名词词l,那么应该重新考虑cd的M设计?/p>

另一个中重要的考虑因素Q最易于识别的名字应该用于最常用的类型?/p>

最常用的类型名应该反映Z用场景,而不是承层ơ?/p>

  • 要用名词词组来给cd命名。用PascalCasing风格
  • 不要l类名加前缀
    只有接口才能Q可以)被加前缀“I”,那是因ؓ.NET框架受到COM及Java的媄?
  • 考虑让派生类的名字以其基cȝ?br>public class FileStream : Stream {...}
  • 要确保一对类/接口的名字只差一个“I”前~Q如果该cL该接口的标准实现?br>public interface IComponent {...}
    public class Component : IComponent {...}

泛型cd参数的命?/strong>

  • 要用描述性的名字来命?
  • 考虑用T来命名参数类?
  • 要给描述性的cd参数名加上T前缀
  • 考虑在类型参C昄出施加于该类型参C的限?/li>

枚Dcd的命?/strong>

  • 要用单数名词来命名枚丄型,除非它表C的是位域(bit fieldQ?
  • 不要l枚丄型的名字d“Enum”后~Q也不要d“Flag”、“Flags”等后缀
  • 不要l枚丄型值的名字d前缀
    此规范与C++中通常所使用的恰好相反。在C++中给枚D的每个成员加上完成的限定W是很重要的Q因为它们可能在枚D名的作用域之外被讉K。但是在托管代码中,枚D成员只能通过枚D名的作用域来讉K?/li>

cd成员的命?/h2>

cdQ方法、属性、事件、构造函数、字D?/p>

Ҏ的命?/strong>

要尽量根据方法所对应的Q务来l它们命名,而不要根据一些实现细节?/p>

  • 要用动词或动词词l来命名Ҏ

属性的命名

  • 要用名词、名词词l或形容词来命名属?
  • 不要让属性名看v来与“Get”方法的名字怼
  • 要用肯定性的短语QCanSeek而不是CantSeekQ来命名布尔属?
  • 考虑用属性的cd名来命名属?br>public enum Color {...}
    public class Control
    {
        public Color Color
        {
            get {...}
            set {...}
        }
    }

事g的命?/strong>

  • 要用动词或动词短语来命名事g
    事gL表示一些动作,要么正在发生Q要么已l发?
  • 要用现在时和q去时来赋予事g名之前和之后的概?br>H口关闭之前发生的close事gQClosing
    H口关闭之后发生的close旉QClosed
  • 不要用Before和After前缀或后~来区分前|和后置事g
  • 要在命名事g处理函数Q用作事件类型的委托Q时加上“EventHandler”后~
  • 要在事g处理函数中用sender和e作ؓ两个参数的名?br>senderQ触发事件的对象Q在整个.NET框架中,sender为objectcd
  • 要在命名事g的参数类型时加上“EventArgs”后~

字段的命?/strong>

  • PascalCasing风格
  • 名词或名词短?
  • 不要l字D名d前缀

参数的命?/h2>
  • camelCasing风格
  • 要用描q性的参数?br>参数名要具备_的描q性,使得在大多数情况下,用户Ҏ参数的名字和cdp够确定它的意?
  • 考虑Ҏ参数的意思而不是参数的cd来命名参?/li>

资源的命?/h2>

本地化的资源好比是属性,可以通过特定的对象来引用。因此,它的命名规范与属性的怼?/p>

  • 要在命名属性关键字Qresource keyQ时使用PascalCasing大小写风?
  • 要标识W的名字h描述性而不是名字变短
  • 不要使用各主要CLR~程语言Ҏ的关键字
  • 要在命名资源时用字母、数字和下划U?
  • 要用点号来给标识W清楚地划分层次
  • 要在为异常消息资源命名是遵@下面的命名约定:
    资源标识W应该是异常的类型名加一个简短的异常标识W,之间以点号分?/li>


adaiye 2007-10-11 09:22 发表评论
]]>漫谈C#之关键字Q?Q?/title><link>http://www.shnenglu.com/adaiye/archive/2007/09/20/32568.html</link><dc:creator>adaiye</dc:creator><author>adaiye</author><pubDate>Thu, 20 Sep 2007 09:12:00 GMT</pubDate><guid>http://www.shnenglu.com/adaiye/archive/2007/09/20/32568.html</guid><wfw:comment>http://www.shnenglu.com/adaiye/comments/32568.html</wfw:comment><comments>http://www.shnenglu.com/adaiye/archive/2007/09/20/32568.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/adaiye/comments/commentRss/32568.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/adaiye/services/trackbacks/32568.html</trackback:ping><description><![CDATA[<p>    每一U语a都有非常多的关键字,而且q些关键字也都大同小异,不过毕竟q是有些许的不一栗有些关键字大家到的多了,自然q悉了Q但是有些关键字用得不大多,或者是新引入的Q所以就不大熟悉了。我q_在用的时候,是会碰C些关键字Q感觉有点生疏,q_也会把这些我不懂的关键字的用法了解一下ƈ记录下来。想到应该也有很多跟我同L人,所以就把我的记录跟大家分n一下。请各位tx多多指正Q?br><strong>讉K关键?/strong><br>    baseQ用于派生类中访问基cȝ成员 <ul> <li>调用基类上已被其他方法重写的Ҏ <p>1 public override void GetInfo()<br>2 {<br>3 base.GetInfo(); // 调用基类上的GetInfoҎ<br>4 }</p> <li>指定创徏zcd例时应用的基cL造函? <p>1 public MyDerived() : base() // 调用基类的构造函?br>2 {<img alt="" src="http://www.cnblogs.com/Images/dot.gif">}</p></li></ul>    从静态方法中使用base关键字是错误的?br><strong>转换关键?br></strong>explicitQ用于声明用户定义的昑ּcd转换q算W? <p>1 class MyType<br>2 {<br>3 public static explicit operator MyType(int i)<br>4     {<br>5 // 从int转换到MyTypecd的代?br>6     }<br>7 } <p><strong></strong>昑ּ转换q算W必通过cd转换调用 <p>1 int i;<br>2 MyType x = (MyType)i; // int到MyTypecd的{换需要进行类型{? <p>    如果转换操作可能D异常或信息丢失,则应用explicit关键字标记它?br>    implicitQ用于声明用户定义的隐式转换q算W?nbsp; <p>1 class MyType<br>2 {<br>3 public static implicit operator int(MyType m)<br>4     {<br>5 // 从MyType转换到intcd的代?br>6     }<br>7 } <p>1 MyType x;<br>2 int i = x;  // 隐式地调用MyType的MyType到intcd的{换运符 <p><strong></strong>隐式转换可以通过消除不必要的cd转换来提高源代码的可L?br>    一般情况下Q调用某一个隐式{换时Q应当绝不会引发异常Qƈ且不会造成信息丢失。否则,应将其标Cؓexplicit?br><strong>Ҏ参数关键?/strong><br>    如果声明Ҏ的参数时没有指明ref或outQ该参数具有与该方法相关的倹{这个值在Ҏ中能被更改,但是当程序返回到调用q程Ӟq种改动不会被保留?br><strong><br></strong>    paramsQ用于指定在参数数目可变时带有参数的Ҏ参数<br>    在方法声明中的params关键字之后不允许引入M其他参数Q但在其前面可以有其他参数。而且在方法声明中只允怋用一个params关键字? <p> 1 public static void UseParams(params int[] list)<br> 2 {<br> 3 for(int i = 0; i < list.Length; i++)<br> 4     {<br> 5         Console.WriteLine(list[i]);<br> 6     }<br> 7 }<br> 8<br> 9 public static void Main()<br>10 {<br>11     UseParamsQ?,2,3Q?<br>12 int[] myArray = new int[3] { 10,11,12 };<br>13     UseParams(myArray);<br>14 } <p>    ref、out  使方法可以引用传递到该方法的那一个变量,当程序{臌用方法时Q在Ҏ中对参数所做的M改动都将传给该变量?br>    ref参数的值将被传递到ref参数Q故必须首先初始化;而out参数不然Q它的g会被传递到该out参数Q故不必首先初始化,但它必须在方法返回以前ؓout参数赋倹{?br>    属性不是变量,不能作ؓref/out参数?/p><img src ="http://www.shnenglu.com/adaiye/aggbug/32568.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/adaiye/" target="_blank">adaiye</a> 2007-09-20 17:12 <a href="http://www.shnenglu.com/adaiye/archive/2007/09/20/32568.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>?NET设计规范?amp;mdash;&mdash;学习W记Q?.5Q框架设计基http://www.shnenglu.com/adaiye/archive/2007/09/07/31766.htmladaiyeadaiyeFri, 07 Sep 2007 09:06:00 GMThttp://www.shnenglu.com/adaiye/archive/2007/09/07/31766.htmlhttp://www.shnenglu.com/adaiye/comments/31766.htmlhttp://www.shnenglu.com/adaiye/archive/2007/09/07/31766.html#Feedback0http://www.shnenglu.com/adaiye/comments/commentRss/31766.htmlhttp://www.shnenglu.com/adaiye/services/trackbacks/31766.htmlq篇文章在一定程度上是对前面几篇文章的一个ȝ?/p>

一个成功的通用框架必须是ؓq大h不同的需求、技能和背景的开发h员而设计的。框架设计师面的最大挑战是些多样化的用L提供即简单又功能强大的框架?/p>

  • 要设计即功能强大又易于用的框架?br>80/20原则?要把_֊集中在框架中使用最为频J的部分Q?0%Q?
  • 要明地为具有不同编E风根{需求、技能以及用不同编E语a的开发h员设计框架?
  • 要了解哪些用多语言框架的广大开发h员?br>我们往往会只p计APIQ而没有清楚地考虑用户的真正需求?/li>

渐进框架

针对不同的用场景,Z同的开发团体提供不同的产品Q这U多框架的方法在某种E度上说是成功的Q比如MS有Visual BasicE序库,有Win32E序库,也有MFC和ATLQ但它也存在严重的缺点:多框架得用某个框架的开发h员难以将他们的知识{Ud下一个技能等U或使用场景Q这通常需要另一个框Ӟ?/p>

  • .NET框架所做的是把VB、MFC、ATL、ASP{这些模型统一h。无论开发h员用何U编E语a或者选择何种~程模型Q可供用的API始终都是一致的?br>一个更好的Ҏ是提供渐q框ӞProgresive frameworkQ?nbsp; 从无到有Q慢慢积累知识,q应用到以后更高U的使用场景中去?
  • .NET框架是一个渐q框架?br>渐进框架的目标是覆盖q大的开发h员,但ƈ不是所有可能的开发h员?br>q也应了没有十全十美q句话:不可能满x一个开发h员的需求?/li>

框架设计的基本原则:

对用戯言Q真正的开发效率来自能够轻易地创造非凡的产品Q而ƈ非来自能够轻易地创造垃圾?/p>

  1. 场景驱动设计原则
  2. 低门栏原?/a>
  3. 自说明对象原?/a>
  4. 分层架构原则


adaiye 2007-09-07 17:06 发表评论
]]>
?NET设计规范?amp;mdash;&mdash;学习W记Q?.4Q分层架构原?/title><link>http://www.shnenglu.com/adaiye/archive/2007/09/05/31631.html</link><dc:creator>adaiye</dc:creator><author>adaiye</author><pubDate>Wed, 05 Sep 2007 08:54:00 GMT</pubDate><guid>http://www.shnenglu.com/adaiye/archive/2007/09/05/31631.html</guid><wfw:comment>http://www.shnenglu.com/adaiye/comments/31631.html</wfw:comment><comments>http://www.shnenglu.com/adaiye/archive/2007/09/05/31631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/adaiye/comments/commentRss/31631.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/adaiye/services/trackbacks/31631.html</trackback:ping><description><![CDATA[<p>分层设计使得在单个框架中同时提供强大的功能和易用性成为可能?/p> <ul> <li>考虑Ҏ架进行分层,佉K层API能提供最佳的开发效率,低层API能提供最强大的功能和最丰富的表现力?br>通俗地讲Q象我这L菜鸟只能用高层APIQ太低层都不懂,而牛Z都是想用也更愿意用低层API的强大功能的Q个人意见)。psQ这边的高层跟低层不是指高深的意思。而是从易用性方面考虑的! </li> <li>避免把低层API和高层API混在同一名字I间中,如果低层API非常复杂的话Q即包含了许多类型)? </li> <li>要确保单个特性域中不同的层能很好的集成在一赗?/li> </ul><img src ="http://www.shnenglu.com/adaiye/aggbug/31631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/adaiye/" target="_blank">adaiye</a> 2007-09-05 16:54 <a href="http://www.shnenglu.com/adaiye/archive/2007/09/05/31631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ListView 日期,数字,字符排序http://www.shnenglu.com/adaiye/archive/2007/09/05/31629.htmladaiyeadaiyeWed, 05 Sep 2007 08:36:00 GMThttp://www.shnenglu.com/adaiye/archive/2007/09/05/31629.htmlhttp://www.shnenglu.com/adaiye/comments/31629.htmlhttp://www.shnenglu.com/adaiye/archive/2007/09/05/31629.html#Feedback0http://www.shnenglu.com/adaiye/comments/commentRss/31629.htmlhttp://www.shnenglu.com/adaiye/services/trackbacks/31629.html阅读全文

adaiye 2007-09-05 16:36 发表评论
]]>
?NET设计规范?amp;mdash;&mdash;学习W记Q?.3Q自说明对象原则http://www.shnenglu.com/adaiye/archive/2007/09/05/31613.htmladaiyeadaiyeWed, 05 Sep 2007 05:09:00 GMThttp://www.shnenglu.com/adaiye/archive/2007/09/05/31613.htmlhttp://www.shnenglu.com/adaiye/comments/31613.htmlhttp://www.shnenglu.com/adaiye/archive/2007/09/05/31613.html#Feedback0http://www.shnenglu.com/adaiye/comments/commentRss/31613.htmlhttp://www.shnenglu.com/adaiye/services/trackbacks/31613.html
* 要确保API是直观的Q无需查阅参考文档就能用于基本场?
你M希望写个“Hello World”都L阅API文档吧?
* 要ؓ所有的API提供优秀的文档?
一斚wQƈ非所有的API都能自说明。不同的Z认ؓ不同的API是自说明的;
另一斚wQ有些h惛_开始用API之前完全理解它们?nbsp; 阅读全文

adaiye 2007-09-05 13:09 发表评论
]]>
?NET设计规范?amp;mdash;&mdash;学习W记Q?.2Q低门栏原则http://www.shnenglu.com/adaiye/archive/2007/09/03/31441.htmladaiyeadaiyeMon, 03 Sep 2007 02:01:00 GMThttp://www.shnenglu.com/adaiye/archive/2007/09/03/31441.htmlhttp://www.shnenglu.com/adaiye/comments/31441.htmlhttp://www.shnenglu.com/adaiye/archive/2007/09/03/31441.html#Feedback0http://www.shnenglu.com/adaiye/comments/commentRss/31441.htmlhttp://www.shnenglu.com/adaiye/services/trackbacks/31441.html阅读全文

adaiye 2007-09-03 10:01 发表评论
]]>
q接数据库和相关数据库操作——之我的Ҏ 利用OLEDBhttp://www.shnenglu.com/adaiye/archive/2007/08/31/31284.htmladaiyeadaiyeFri, 31 Aug 2007 04:28:00 GMThttp://www.shnenglu.com/adaiye/archive/2007/08/31/31284.htmlhttp://www.shnenglu.com/adaiye/comments/31284.htmlhttp://www.shnenglu.com/adaiye/archive/2007/08/31/31284.html#Feedback0http://www.shnenglu.com/adaiye/comments/commentRss/31284.htmlhttp://www.shnenglu.com/adaiye/services/trackbacks/31284.html阅读全文

adaiye 2007-08-31 12:28 发表评论
]]>
?NET设计规范》——学习笔讎ͼ2Q框架设计的基本原则http://www.shnenglu.com/adaiye/archive/2007/08/29/31173.htmladaiyeadaiyeWed, 29 Aug 2007 09:48:00 GMThttp://www.shnenglu.com/adaiye/archive/2007/08/29/31173.htmlhttp://www.shnenglu.com/adaiye/comments/31173.htmlhttp://www.shnenglu.com/adaiye/archive/2007/08/29/31173.html#Feedback0http://www.shnenglu.com/adaiye/comments/commentRss/31173.htmlhttp://www.shnenglu.com/adaiye/services/trackbacks/31173.html阅读全文

adaiye 2007-08-29 17:48 发表评论
]]>
?NET设计规范?amp;mdash;&mdash;学习W记Q?Q?/title><link>http://www.shnenglu.com/adaiye/archive/2007/08/28/31017.html</link><dc:creator>adaiye</dc:creator><author>adaiye</author><pubDate>Tue, 28 Aug 2007 06:23:00 GMT</pubDate><guid>http://www.shnenglu.com/adaiye/archive/2007/08/28/31017.html</guid><wfw:comment>http://www.shnenglu.com/adaiye/comments/31017.html</wfw:comment><comments>http://www.shnenglu.com/adaiye/archive/2007/08/28/31017.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/adaiye/comments/commentRss/31017.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/adaiye/services/trackbacks/31017.html</trackback:ping><description><![CDATA[     摘要: 如果框架的设计者能够站在用者背后解释应该如何用框Ӟ那么׃需要同规范了?nbsp; <a href='http://www.shnenglu.com/adaiye/archive/2007/08/28/31017.html'>阅读全文</a><img src ="http://www.shnenglu.com/adaiye/aggbug/31017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/adaiye/" target="_blank">adaiye</a> 2007-08-28 14:23 <a href="http://www.shnenglu.com/adaiye/archive/2007/08/28/31017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows~程&mdash;&mdash;Windows~程基础Q?Q?/title><link>http://www.shnenglu.com/adaiye/archive/2007/08/15/30077.html</link><dc:creator>adaiye</dc:creator><author>adaiye</author><pubDate>Wed, 15 Aug 2007 06:05:00 GMT</pubDate><guid>http://www.shnenglu.com/adaiye/archive/2007/08/15/30077.html</guid><wfw:comment>http://www.shnenglu.com/adaiye/comments/30077.html</wfw:comment><comments>http://www.shnenglu.com/adaiye/archive/2007/08/15/30077.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/adaiye/comments/commentRss/30077.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/adaiye/services/trackbacks/30077.html</trackback:ping><description><![CDATA[<p>l。。。。。。。?/p><p><script type="text/javascript"><!--google_ad_client = "pub-2823374497557651";google_ad_width = 336;google_ad_height = 280;google_ad_format = "336x280_as";google_ad_type = "text_image";//2007-08-26: youhuagoogle_ad_channel = "1405522066";google_color_border = "FFFFFF";google_color_bg = "FFFFFF";google_color_link = "000000";google_color_text = "000000";google_color_url = "008000";//--></script><script type="text/javascript"  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></p> <p><strong>4. TextBox控g</strong></p> <p>文本框的主要用途是让用戯入文本,用户可以输入M字符Q也可以限制用户只输入数倹{?/p> <p>.NET Framework内置了两个基本控件来提取用户输入的文本:TextBox和RichTextBox。这两个控g都派生于TextBoxBaseQ而TextBoxBase又派生于Control?/p> <p>TextBoxBase提供了在文本框中处理文本的基本能力,例如选择文本、剪切和从剪切板上粘帖,以及许多事情?/p> <p><strong>4.1 TextBox控g的属?/strong></p> <p>常用属性:</p> <ul> <li>CausesValidationQ当控g的这个属性ؓtrueQ且该控件获得了焦点Ӟ会引发两个事ӞValidating和Validated。可以处理这些事Ӟ以便验证失去焦点的控件中数据的有效性? </li> <li>CharacterCasingQ这个DCTextBox是否会改变输入的文本的大写。可能的值有Q?/li> </ul> <ol> <ol> <li>LowerQ文本框中输入的所有文本都转换为小写; </li> <li>NormalQ不变; </li> <li>UpperQ都转换为大写?/li> </ol> </ol> <ul> <li>MaxLengthQ这个值指定输入到TextBox中的文本的最大字W长度。如果设?Q表C最大字W长度仅受限于可用的内存? </li> <li>MultilineQ表C控g是否是一个多行控件。多行控件可以显C多行文本? </li> <li>PasswordCharQ指定是否用密码字符替换在单行文本框中输入的字符。如果Multiline属性ؓtrueQ这个属性就不v作用? </li> <li>ReadOnlyQ这个BooleanDC文本是否ؓ只读? </li> <li>ScrollBarsQ指定多行文本框是否昄滚动条? </li> <li>SelectedTextQ在文本框中选择的文本? </li> <li>SelectionLengthQ在文本中选择的字W数。如果这个D|得比文本中的字W数大,则控件会把它重新讄为字WL减去SelectionStart的倹{? </li> <li>SelectionStartQ文本框中被选中文本的开头? </li> <li>WordWrapQ指定在多行文本框中Q如果一行的宽度出了控件的宽度Q其文本是否应自动换行?/li> </ul>  <p><strong>4.2 TextBox控g的事?/strong></p> <p>TextBox提供了以下所C的事gQ?/p> <ul> <li>Enter、Leave、Validating、ValidatedQ这4个事件按照列出的序引发。它们统UCؓ焦点事gQ当控g的焦点发生改变时引发Q但有两个例外:Validating和Validated仅在控g接收了焦点,且其CausesValidation属性设|ؓtrue时引发。接收焦点的控g引发事g的原因是有时即焦点改变了,我们也不希望验证控g的有效性? </li> <li>KeyDown、KeyPress、KeyUpQ这三个事gUCؓ“键事?#8221;。它们可以监视和改变输入到控件中的内宏VKeyDown和KeyUp接收与所按下键对应的键码Q这样就可以定是否按下了特D的键Shift或Control和F1。另一斚wQKeyPress接收与键对应的字W。这表示字母a的gA的g同? </li> <li>ChangeQ只要文本框的文本发生了改变Q就会引发该事g?/li> </ul><img src ="http://www.shnenglu.com/adaiye/aggbug/30077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/adaiye/" target="_blank">adaiye</a> 2007-08-15 14:05 <a href="http://www.shnenglu.com/adaiye/archive/2007/08/15/30077.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows~程&mdash;&mdash;Windows~程基础Q?Q?/title><link>http://www.shnenglu.com/adaiye/archive/2007/08/13/29890.html</link><dc:creator>adaiye</dc:creator><author>adaiye</author><pubDate>Mon, 13 Aug 2007 02:31:00 GMT</pubDate><guid>http://www.shnenglu.com/adaiye/archive/2007/08/13/29890.html</guid><wfw:comment>http://www.shnenglu.com/adaiye/comments/29890.html</wfw:comment><comments>http://www.shnenglu.com/adaiye/archive/2007/08/13/29890.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/adaiye/comments/commentRss/29890.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/adaiye/services/trackbacks/29890.html</trackback:ping><description><![CDATA[<p>l:</p> <p><strong>2. Button控g</strong></p> <p>按钮主要用于执行3cMQ务:</p> <ul> <li>用某U状态关闭对话框Q如OK和Cancel按钮Q?/li> <li>l对话框上输入的数据执行操作Q如Q输入一些搜索条件后Q单击SearchQ?/li> <li>打开另一个对话框或应用程序(如Help按钮Q?/li> </ul> <p><strong>2.1 Button控g的属性:</strong></p> <p>ButtomcL常用的属性,它们都是在ButtonBase基类中定义的?/p> <ul> <li>FlatStyleQ改变按钮的样式?/li> <li>EnabledQ把Enabled讄为falseQ则该按钮就会灰显,单击它,不会起Q何作用。此属性派生于Control?/li> <li>ImageQ可以指定一个在按钮上显C的囑փQ位图、图标等Q?/li> <li>ImageAlignQ按钮上囑փ的显CZ|?/li> </ul> <p><strong>2.2 Button控g的事Ӟ</strong></p> <p>private void button1_Click(object sender, EventArgs e)</p> <p>{...}</p> <p>对于Click事gQ第一个参数Object sender包含被单ȝ控g。另一个参数EventArgs e包含所发生事g的信息?/p> <p><strong>3. Label和LinkLabel控g</strong></p> <p>Label控gQ标{)是一个简单的控gQ其用途只有一个:在窗体上昄文本?/p> <p>.NET Framework包含两个标签控gQ它们可以用两种截然不同的方式显C:</p> <ul> <li>Label是标准的Windows标签?/li> <li>LinkLabel以Internet链接的方式显C(链接)?/li> </ul> <p>管Label通常不需要添加Q何事件处理代码,但它也支持事件?/p> <p>Label控g常用的属性:</p> <ul> <li>BorderStyleQ指定标{边框的样式。默认ؓ无边框?/li> <li>FlatStyleQ控制显C控件的方式?/li> <li>ImageQ指定要在标{上昄的图像(位图、图标等Q?/li> <li>ImageAlignQ图像显C在标签的什么位|?/li> <li>LinkAreaQ(只用于LinkLabelQ文本中昄为链接的部分?/li> <li>LinkColorQ(只用于LinkLabelQ链接的颜色?/li> <li>LinksQ(只用于LinkLabelQLinkLabel可以包含多个链接。利用这个属性可以查N要的链接。控件会跟踪昄文本中的链接Q不能在设计期间使用?/li> <li>LinkVisitedQ(只用于LinkLabelQ把它设|ؓtrueQ单LӞ链接׃昄为另一U颜艌Ӏ?/li> <li>TextAlignQ文本显C在控g中的什么位|?/li> <li>VisitedLinkColorQ(只用于LinkLabelQ用户单击LinkLabel后控件的颜色</li> </ul><img src ="http://www.shnenglu.com/adaiye/aggbug/29890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/adaiye/" target="_blank">adaiye</a> 2007-08-13 10:31 <a href="http://www.shnenglu.com/adaiye/archive/2007/08/13/29890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows~程&mdash;&mdash;Windows~程基础Q?Q?/title><link>http://www.shnenglu.com/adaiye/archive/2007/08/12/29830.html</link><dc:creator>adaiye</dc:creator><author>adaiye</author><pubDate>Sun, 12 Aug 2007 08:11:00 GMT</pubDate><guid>http://www.shnenglu.com/adaiye/archive/2007/08/12/29830.html</guid><wfw:comment>http://www.shnenglu.com/adaiye/comments/29830.html</wfw:comment><comments>http://www.shnenglu.com/adaiye/archive/2007/08/12/29830.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/adaiye/comments/commentRss/29830.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/adaiye/services/trackbacks/29830.html</trackback:ping><description><![CDATA[<p><strong>1. 控g</strong></p> <p>在用WindowsH体Ӟ是在用System.Windows.Forms命名I间?/p> <p>.NET中的大多数控仉z于System.Windows.Form.ControlcR这个类定义了控件的基本功能。还有一些控件称为定制或用户控gQ派生于另一个类System.Windows.Forms.UserControl。这个类本nz于Controlc,提供了创建控件所需要的功能。另外,用于设计Web用户界面的控件派生于另一个类System.Web.UI.Control?/p> <p><img src="mk:@MSITStore:E:\Programming%20Language\DotNet\Wrox.Beginning.Visual.C.Sharp.2005.Nov.2005.eBook-BBL\Wrox.Beginning.Visual.C.Sharp.2005.Nov.2005.chm::/11787/images/fig14_01_0.jpg"></p> <p><strong>1.1 属?/strong></p> <p>所有控仉有许多属性,用于处理控g的操作?/p> <p>下面是ControlcL常见的属性:</p> <p>AnchorQ指定当控g的容器的大小发生变化Ӟ该控件如何响应?</p> <p>BackColorQ背景色 </p> <p>BottomQ指定控件的底部距离H口的顶部有多远。这与指定控件的高度不同 </p> <p>DockQ可以控g停靠在窗口的边界?/p> <p>EnabledQ把Enable设ؓtrue通常表示该控件可以接收用L输入。把Enable讄为false通常表示不能接收用户的输?</p> <p>ForeColorQ前景色 </p> <p>HeightQ控件从底部到顶部的距离Q是控g本n的距) </p> <p>LeftQ控件的左边界到H口左边界的距离 </p> <p>NameQ控件的名称Q这个名U可以在代码中用于引用该控g </p> <p>ParentQ控件的父控?</p> <p>RightQ控件的双界到H口双界的距离 </p> <p>TabIndexQ控件在容器中的标签序?</p> <p>TabStopQ指定控件是否可以用Tab键访?</p> <p>TagQ这个值通常不由控g本n使用Q而是在控件中存储该控件的信息。当通过Windows Form设计器给q个属性赋值时Q就只能l它赋一个字W串?</p> <p>TopQ控件的剙距离H口剙的距?</p> <p>VisibleQ指定控件是否在q行期间可见 </p> <p>WidthQ控件的宽度 </p> <p>另外Q?NET的所有内部控仉使用Text属性来讄昄的文本?</p> <p><strong>1.2 控g的定位、停靠和寚w</strong> </p> <p>在Visual Studio 2005中,H体设计器默认改Z用栅格状的界面,q用捕捉线来定位控Ӟ使控件整齐地排列在界面上?</p> <p>在窗体设计中QAnchor和Dock属性特别有用?</p> <p>Anchor属性可以指定如果控仉新设|了大小Q就Ҏ控g的边界锁定它Q或者其大小不变Q当ҎH口的边界来锚定它的位置?</p> <p>Dock属性用于指定控件应停放在容器的Ҏ上。如果用户重新设|了H口的大,该控件将l箋停放在窗口的Ҏ上?</p> <p><strong>1.3 事g</strong> </p> <p>下面所列的是ControlcL定义的最常见的事Ӟ </p> <p>ClickQ在单击控g时引发。在某些情况下,q个事g也会在用h下Enter键时引发?</p> <p>DoubleClickQ在双击控g时引发。处理某些控件上的Click事gQ例如Button控gQ表C永q不会调用DoubleClick事g?</p> <p>DragDropQ在完成拖放操作时引发。换a之,当一个对象被拖到控g上,然后用户释放鼠标按钮后,引发该事件?</p> <p>DragEnterQ在被拖动的对象q入控g的边界时引发?</p> <p>DragLeaveQ在被拖动的对象Ud控g的边界时引发?</p> <p>DragOverQ在被拖动的对象攑֜控g上时引发?</p> <p>KeyDownQ当控g有焦ҎQ按下一个键时引发该事gQ这个事件L在KeyPress和KeyUp之前发生?</p> <p>KeyPressQ当控g有焦ҎQ按下一个键发生该事Ӟq个事gL在KeyDown之后、KeyUp之前引发。KeyDown和KeyPress的区别是KeyDown传送被按下的键的键盘码Q而KeyPress传送被按下键的char倹{?</p> <p>KeyUpQ当控g有焦ҎQ释放一个键时发生该事gQ这个事件L在KeyDown和KeyPress之后引发?</p> <p>GotFocusQ在控g接收焦点时引发。不要用q个事g执行控g的有效性验证,而应使用Validating和Validated?</p> <p>LostFocusQ在控g丢失焦点时引发。不要用q个事g执行控g的有效性验证,而应使用Validating和Validated?</p> <p>MouseDownQ在鼠标指针指向一个控Ӟ且鼠标按钮被按下时引发。这与Click事g不同Q因为在按钮被按下之后,且未被释放之前引发MouseDown?</p> <p>MouseMoveQ在鼠标划过控g时引发?</p> <p>MouseUpQ在鼠标指针位于控g上,且鼠标按钮被释放时引发?</p> <p>PaintQ绘制控件时引发?</p> <p>ValidatedQ当控g的CausesValidation属性设|ؓtrueQ且该控件获得焦ҎQ引发该事g。它在Validating事g之后发生Q表C有效性验证已l完成?</p> <p>ValidatingQ当控g的CausesValidation属性设|ؓtrueQ且该控件获得焦ҎQ引发该事g。需要注意的是,被验证有效性的控g是失ȝ点的控gQ而不是获得焦点的控g?</p> <p>  </p> <p>  </p> <p>待箋.................................</p><img src ="http://www.shnenglu.com/adaiye/aggbug/29830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/adaiye/" target="_blank">adaiye</a> 2007-08-12 16:11 <a href="http://www.shnenglu.com/adaiye/archive/2007/08/12/29830.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.650qq.cn" target="_blank">þ¾Ʒ</a>| <a href="http://www.woaisheying.cn" target="_blank">þƬѹۿ</a>| <a href="http://www.hhhkk.cn" target="_blank">ݺݺݾþ</a>| <a href="http://www.510dpw.cn" target="_blank">þþþþùƷ</a>| <a href="http://www.swangxinwen.cn" target="_blank">ŷսþþþþþ</a>| <a href="http://www.worldedu.org.cn" target="_blank">޾þһ</a>| <a href="http://www.navas.cn" target="_blank">2020þþƷ</a>| <a href="http://www.bisibbs.cn" target="_blank">þþþAVվ </a>| <a href="http://www.garden-tools.com.cn" target="_blank">ŷƷһþ</a>| <a href="http://www.club-biz.cn" target="_blank">AVҰ¾þ</a>| <a href="http://www.jtuw.cn" target="_blank">91Ʒպþò</a>| <a href="http://www.autothink.com.cn" target="_blank">ŷþ޾Ʒ</a>| <a href="http://www.whpcjs.cn" target="_blank">þþþùƷ</a>| <a href="http://www.djl0320.cn" target="_blank">þ޾ƷƷ</a>| <a href="http://www.25jt.cn" target="_blank">ݺɫþ</a>| <a href="http://www.kq58.cn" target="_blank">þþþþԻAV</a>| <a href="http://www.x4565.cn" target="_blank">AAƬѿƵþ</a>| <a href="http://www.nicnr.cn" target="_blank">þŮƷƷ</a>| <a href="http://www.mxcqsf.cn" target="_blank">þùƵ</a>| <a href="http://www.25jt.cn" target="_blank">þ91Ʒþ91ۺ</a>| <a href="http://www.ejjn.cn" target="_blank">þþƷavˮ </a>| <a href="http://www.zheibvgsz.cn" target="_blank">99þþƷһ</a>| <a href="http://www.0769zc.net.cn" target="_blank">һɫۺϾþ</a>| <a href="http://www.y0ing.cn" target="_blank">ھƷþþþþþþ</a>| <a href="http://www.pgfg.net.cn" target="_blank">91þþһȫ</a>| <a href="http://www.cqhydpqi.cn" target="_blank">þۺ³³</a>| <a href="http://www.xinkecheng.net.cn" target="_blank">þþþ</a>| <a href="http://www.mrksl.cn" target="_blank">ŷþۺϾɫۺ</a>| <a href="http://www.kunqun168.cn" target="_blank">޹˾þþƷӰ</a>| <a href="http://www.dr-knoell-consult.com.cn" target="_blank">þ޾ƷĻ</a>| <a href="http://www.1dis.cn" target="_blank">ɫۺϾþþþ</a>| <a href="http://www.adpz.cn" target="_blank">ŷ޹Ʒþø</a>| <a href="http://www.bjhaoruida.com.cn" target="_blank">þҹӰ</a>| <a href="http://www.kbsfrp.cn" target="_blank">޷?Vþò</a>| <a href="http://www.zzxinwen.com.cn" target="_blank">þѹƵ</a>| <a href="http://www.sdhaomai.cn" target="_blank">þùѾƷ</a>| <a href="http://www.yweishang.cn" target="_blank">ɫþþۺƷ </a>| <a href="http://www.yylsax.cn" target="_blank">þþƷƵ</a>| <a href="http://www.ebankon.com.cn" target="_blank">þùƷþ</a>| <a href="http://www.markey.com.cn" target="_blank">þۺĻ</a>| <a href="http://www.b42k.cn" target="_blank">þƵվ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>