转自 http://www.cnblogs.com/gyb1226/archive/2012/03/07/2383786.html 与 http://www.cnblogs.com/ymss1987/archive/2009/08/07/1541503.html
C#常用控件整理
窗体
1、常用属性
(1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。
(2)WindowState属性: 用来获取或设置窗体的窗口状态。
取值有三种: Normal(窗体正常显示)、Minimized(窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示)。
(3)StartPosition属性:用来获取或设置运行时窗体的起始位置。
(4)Text属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。
(5)Width属性:用来获取或设置窗体的宽度。
(6)Height属性:用来获取或设置窗体的高度。
(7)Left属性:用来获取或设置窗体的左边缘的x坐标(以像素为单位)。
(8)Top属性:用来获取或设置窗体的上边缘的y坐标(以像素为单位)。
(9)ControlBox属性:用来获取或设置一个值,该值指示在该窗体的标题栏中是否显示控制框。值为true时将显示控制框,值为false时不显示控制框。
(10)MaximizeBox属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。值为 true时显示最大化按钮,值为false时不显示最大化按钮。
(11)MinimizeBox 属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。值为 true时显示最小化按钮,值为false时不显示最小化按钮。
(12)AcceptButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按 Enter 键时就相当于单击了窗体上的该按钮。
(13)CancelButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按 Esc 键时就相当于单击了窗体上的该按钮。
(14)Modal 属性:该属性用来设置窗体是否为有模式显示窗体。如果有模式地显示该窗体,该属性值为true;否则为 false。当有模式地显示窗体时,只能对模式窗体上的对象进行输入。必须隐藏或关闭模式窗体(通常是响应某个用户操作),然后才能对另一窗体进行输入。有模式显示的窗体通常用做应用程序中的对话框。
(15)ActiveControl属性:用来获取或设置容器控件中的活动控件。窗体也是一种容器控件。
(16)ActiveMdiChild属性:用来获取多文档界面(MDI)的当前活动子窗口。
(17)AutoScroll 属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。如果此属性值设置为true,则当任何控件位于窗体工作区之外时,会在该窗体上显示滚动条。另外,当自动滚动打开时,窗体的工作区自动滚动,以使具有输入焦点的控件可见。
(18)BackColor属性:用来获取或设置窗体的背景色。
(19)BackgroundImage属性:用来获取或设置窗体的背景图像。
(20)Enabled 属性:用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。如果控件可以对用户交互作出响应,则为 true;否则为false。默认值为true。
(21)Font属性:用来获取或设置控件显示的文本的字体。
(22)ForeColor属性:用来获取或设置控件的前景色。
(23)IsMdiChild属性:获取一个值,该值指示该窗体是否为多文档界面(MDI)子窗体。值为 true时,是子窗体,值为false时,不是子窗体。
(24)IsMdiContainer 属性:获取或设置一个值,该值指示窗体是否为多文档界面(MDI)中的子窗体的容器。值为true时,是子窗体的容器,值为false时,不是子窗体的容器。
(25)KeyPreview属性:用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的控件前,窗体是否将接收该事件。值为true时,窗体将接收按键事件,值为false时,窗体不接收按键事件。
(26)MdiChildren属性:数组属性。数组中的每个元素表示以此窗体作为父级的多文档界面(MDI)子窗体。
(27)MdiParent属性:用来获取或设置此窗体的当前多文档界面(MDI)父窗体。
(28)ShowInTaskbar属性:用来获取或设置一个值,该值指示是否在Windows任务栏中显示窗体。
(29)Visible属性:用于获取或设置一个值,该值指示是否显示该窗体或控件。值为true时显示窗体或控件,为false时不显示。
(30)Capture属性:如果该属性值为true,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的范围内。
2、常用方法
下面介绍一些窗体的最常用方法。
(1)Show方法:该方法的作用是让窗体显示出来,其调用格式为:
窗体名.Show();
其中窗体名是要显示的窗体名称。
(2)Hide方法:该方法的作用是把窗体隐藏出来,其调用格式为:
窗体名.Hide();
其中窗体名是要隐藏的窗体名称。
(3)Refresh方法:该方法的作用是刷新并重画窗体,其调用格式为:
窗体名.Refresh();
其中窗体名是要刷新的窗体名称。
(4)Activate方法:该方法的作用是激活窗体并给予它焦点。其调用格式为:
窗体名.Activate();
其中窗体名是要激活的窗体名称。
(5)Close方法:该方法的作用是关闭窗体。其调用格式为:
窗体名.Close();
其中窗体名是要关闭的窗体名称。
(6)ShowDialog方法:该方法的作用是将窗体显示为模式对话框。其调用格式为:
窗体名.ShowDialog();
3.常用事件
(1)Load事件:该事件在窗体加载到内存时发生,即在第一次显示窗体前发生。
(2)Activated事件:该事件在窗体激活时发生。
(3)Deactivate事件:该事件在窗体失去焦点成为不活动窗体时发生。
(4)Resize事件:该事件在改变窗体大小时发生。
(5)Paint事件:该事件在重绘窗体时发生。
(6)Click事件:该事件在用户单击窗体时发生。
(7)DoubleClick事件:该事件在用户双击窗体时发生。
(8)Closed事件:该事件在关闭窗体时发生。
================================================================================================
文本框类控件
2、Label 控件
1、常用属性:
(1)Text属性:用来设置或返回标签控件中显示的文本信息。
(2)AutoSize 属性:用来获取或设置一个值,该值指示是否自动调整控件的大小以完整显示其内容。取值为 true时,控件将自动调整到刚好能容纳文本时的大小,取值为false时,控件的大小为设计时的大小。默认值为false。
(3)Anchor 属性:用来确定此控件与其容器控件的固定关系的。所谓容器控件指的是这样一种情况:往往在控件之中还有一个控件,例如最典型的就是窗体控件中会包含很多的控件,像标签控件、文本框等。这时称包含控件的控件为容器控件或父控件,而父控件称为子控件。这时将遇到一个问题,即子控件与父控件的位置关系问题,即当父控件的位置、大小变化时,子控件按照什么样的原则改变其位置、大小。Anchor属性就规定了这个原则。
对于 Anchor 属性,可以设定 Top、Bottom、Right、Left 中的任意几种,设置的方法是在属性窗口中单击Anchor属性右边的箭头,将会出现如图 9-6 的窗口,通过它可设置 Anchor 属性值。图 9-6 中选中变黑的方位即为设定的方位控制,即图中所示的为 Left、Right、Bottom。此时,如果父窗口变化,子窗口将保证其左边缘与容器左边的距离、上边缘与容器上边的距离、底边与容器底边的距离等不变,效果如图9-7 所示。 可见随着窗体的大小变化, Label控件也会随着变 。 而不变的则是Archor中所规定的边缘与相应的父控件边缘的距离。
(4)BackColor属性:用来获取或设置控件的背景色。当该属性值设置为 Color.Transparent 时,标签将透明显示,即背景色不再显示出来。
(5)BorderStyle 属性:用来设置或返回边框。有三种选择:BorderStyle.None 为无边框(默认),BorderStyle.FixedSingle 为固定单边框,BorderStyle.Fixed3D 为三维边框。
(6)TabIndex属性:用来设置或返回对象的Tab键顺序。
(7)Enabled 属性:用来设置或返回控件的状态。值为 true 时允许使用控件,值为 false 时禁止使用控件,此时标签呈暗淡色,一般在代码中设置。图9-8 边框效果图
另外,标签还具有Visible、ForeColor、Font等属性,具体含义请参考窗体的相应属性。
-------------------------------------------------------------------------------------------------
3、TextBox 控件
1、主要属性:
(1)Text属性:Text属性是文本框最重要的属性,因为要显示的文本就包含在Text属性中。默认情况下,最多可在一个文本框中输入2048个字符。如果将MultiLine属性设置为true,则最多可输入32KB 的文本。Text属性可以在设计时使用【属性】窗口设置,也可以在运行时用代码设置或者通过用户输入来设置。可以在运行时通过读取Text属性来获得文本框的当前内容。
(2)MaxLength 属性:用来设置文本框允许输入字符的最大长度,该属性值为 0 时,不限制输入的字符数。
(3)MultiLine 属性:用来设置文本框中的文本是否可以输入多行并以多行显示。值为 true 时,允许多行显示。值为false时不允许多行显示,一旦文本超过文本框宽度时,超过部分不显示。
(4)HideSelection属性:用来决定当焦点离开文本框后,选中的文本是否还以选中的方式显示,值为true,则不以选中的方式显示,值为 false将依旧以选中的方式显示。
(5)ReadOnly属性:用来获取或设置一个值,该值指示文本框中的文本是否为只读。值为 true时为只读,值为 false时可读可写。
(6)PasswordChar 属性:是一个字符串类型,允许设置一个字符,运行程序时,将输入到 Text 的内容全部显示为该属性值,从而起到保密作用,通常用来输入口令或密码。
(7) ScrollBars属性: 用来设置滚动条模式, 有四种选择: ScrollBars.None (无滚动条), ScrollBars.Horizontal(水平滚动条),ScrollBars.Vertical(垂直滚动条),ScrollBars.Both(水平和垂直滚动条)。
注意:只有当MultiLine属性为true时,该属性值才有效。在WordWrap属性值为true时, 水平滚动条将不起作用
(8)SelectionLength属性:用来获取或设置文本框中选定的字符数。只能在代码中使用,值为0 时,表示未选中任何字符。
(9)SelectionStart属性:用来获取或设置文本框中选定的文本起始点。只能在代码中使用,第一个字符的位置为0,第二个字符的位置为1,依此类推。
(10)SelectedText 属性:用来获取或设置一个字符串,该字符串指示控件中当前选定的文本。只能在代码中使用。
(11)Lines:该属性是一个数组属性,用来获取或设置文本框控件中的文本行。即文本框中的每一行存放在 Lines数组的一个元素中。
(12)Modified:用来获取或设置一个值,该值指示自创建文本框控件或上次设置该控件的内容后,用户是否修改了该控件的内容。值为true表示修改过,值为 false表示没有修改过。
(13)TextLength属性:用来获取控件中文本的长度。
(14)WordWrap:用来指示多行文本框控件在输入的字符超过一行宽度时是否自动换行到下一行的开始,值为 true,表示自动换到下一行的开始,值为false表示不自动换到下一行的开始。
2、常用方法:
(1)AppendText方法:把一个字符串添加到文件框中文本的后面,调用的一般格式如下:
文本框对象.AppendText(str)
参数 str是要添加的字符串。
(2)Clear方法:从文本框控件中清除所有文本。调用的一般格式如下:
文本框对象.Clear()该方法无参数。
(3)Focus方法:是为文本框设置焦点。如果焦点设置成功,值为 true,否则为false。调用的一般格式如下:
文本框对象.Focus()该方法无参数。
(4)Copy方法:将文本框中的当前选定内容复制到剪贴板上。调用的一般格式如下:
文本框对象.Copy()该方法无参数。
(5)Cut方法:将文本框中的当前选定内容移动到剪贴板上。调用的一般格式如下:
文本框对象.Cut()该方法无参数。
(6)Paste方法:用剪贴板的内容替换文本框中的当前选定内容。调用的一般格式如下:
文本框对象.Paste()该方法无参数。
(7)Undo 方法:撤销文本框中的上一个编辑操作。调用的一般格式如下:
文本框对象.Undo()该方法无参数。
(8)ClearUndo方法:从该文本框的撤销缓冲区中清除关于最近操作的信息,根据应用程序的状态,可以使用此方法防止重复执行撤销操作。调用的一般格式如下:
文本框对象.ClearUndo()该方法无参数。
(9)Select方法:用来在文本框中设置选定文本。调用的一般格式如下:
文本框对象.Select(start,length)
该方法有两个参数,第一个参数start用来设定文本框中当前选定文本的第一个字符的位置,第二个参数length用来设定要选择的字符数。
(10)SelectAll方法:用来选定文本框中的所有文本。调用的一般格式如下:
文本框对象.SelectAll()该方法无参数。
3、常用事件:
(1)GotFocus事件:该事件在文本框接收焦点时发生。
(2)LostFocus事件:该事件在文本框失去焦点时发生。
(3)TextChanged事件:该事件在Text属性值更改时发生。无论是通过编程修改还是用户交互更改文本框的Text属性值,均会引发此事件。
------------------------------------------------------------------------------------------------
4、RichTextBox控件
RichTextBox是一种既可以输入文本、 又可以编辑文本的文字处理控件,与TextBox控件相比,RichTextBox控件的文字处理功能更加丰富,不仅可以设定文字的颜色、字体, 还具有字符串检索功能。 另外, RichTextBox控件还可以打开、编辑和存储.rtf格式文件、ASCII文本格式文件及Unicode编码格式的文件。
1、常用属性
上面介绍的 TextBox 控件所具有的属性,RichTextBox 控件基本上都具有,除此之外,该控件还具有一些其他属性。
(1)RightMargin属性:用来设置或获取右侧空白的大小,单位是像素。通过该属性可以设置右侧空白,如希望右侧空白为50像素,可使用如下语句:
RichTextBox1.RightMargin=RichTextBox1.Width-50;
(2)Rtf属性:用来获取或设置RichTextBox控件中的文本,包括所有RTF格式代码。可以使用此属性将RTF格式文本放到控件中以进行显示,或提取控件中的RTF格式文本。此属性通常用于在RichTextBox控件和其他RTF源(如 MicrosoftWord或 Windows写字板)之间交换信息。
(3)SelectedRtf 属性:用来获取或设置控件中当前选定的 RTF 格式的格式文本。此属性使用户得以获取控件中的选定文本,包括RTF格式代码。如果当前未选定任何文本,给该属性赋值将把所赋的文本插入到插入点处。如果选定了文本,则给该属性所赋的文本值将替换掉选定文本。
(4)SelectionColor属性:用来获取或设置当前选定文本或插入点处的文本颜色。
(5)SelectionFont属性:用来获取或设置当前选定文本或插入点处的字体。
2、常用方法
前面介绍的 TextBox 控件所具有的方法,RichTextBox 控件基本上都具有,除此之外,该控件还具有一些其他方法。
(1)Redo方法:用来重做上次被撤销的操作。调用的一般格式如下:
RichTextBox对象.Redo()
该方法无参数。
(2)Find方法:用来从RichTextBox控件中查找指定的字符串。经常使用的调用格式如下:
[格式1]:
RichTextBox对象.Find(str)
[功能]:在指定的“RichTextBox”控件中查找文本,并返回搜索文本的第一个字符在控件内的位置。如果未找到搜索字符串或者str参数指定的搜索字符串为空,则返回值为1。
[格式2]:
RichTextBox对象.Find(str,RichTextBoxFinds)
[功能]:在“RichTextBox 对象”指定的文本框中搜索 str 参数中指定的文本,并返回文本的第一个字符在控件内的位置。如果返回负值,则未找到所搜索的文本字符串。还可以使用此方法搜索特定格式的文本。参数RichTextBoxFinds指定如何在控件中执行文本搜索,其取值及其含义如表9-4 所示。
[格式3]:
RichTextBox对象.Find(str,start,RichTextBoxFinds)
[功能]:这里Find方法与前面的格式2 基本类似,不同的只是通过设置控件文本内的搜索起始位置来缩小文本搜索范围,start参数表示开始搜索的位置。此功能使用户得以避开可能已搜索过的文本或已经知道不包含要搜索的特定文本的文本。如果在options参数中指定了RichTextBoxFinds.Reverse值,则 start参数的值将指示反向搜索结束的位置,因为搜索是从文档底部开始的。
(3)SaveFile方法:用来把RichTextBox中的信息保存到指定的文件中,调用格式有以下三种。
[格式1]:
RichTextBox对象名.SaveFile(文件名);
[功能]:将 RichTextBox控件中的内容保存为RTF格式文件中。
[格式2]:
RichTextBox对象名.SaveFile(文件名,文件类型);
[功能]:将 RichTextBox控件中的内容保存为“文件类型”指定的格式文件中。
[格式3]:
RichTextBox对象名.SaveFile(数据流,数据流类型);
[功能]:将 RichTextBox控件中的内容保存为“数据流类型”指定的数据流类型文件中。 其中,文件类型或数据流类型的取值及含义如表9-5所示。
(4)LoadFile方法:使用LoadFile方法可以将文本文件、RTF文件装入RichTextBox控件。主要的调用格式有以下三种。
[格式1]:
RichTextBox对象名.LoadFile(文件名);
[功能]:将RTF格式文件或标准ASCII文本文件加载到RichTextBox控件中。
[格式2]:
RichTextBox对象名.LoadFile(数据流,数据流类型);
[功能]:将现有数据流的内容加载到RichTextBox控件中。
[格式3]:
RichTextBox对象名.LoadFile(文件名,文件类型);
[功能]:将特定类型的文件加载到RichTextBox控件中。
注意:文件类型和数据流格式见表9-5。
------------------------------------------------------------------------------------------------
5、NumericUpDown 控件
【Windows 窗体】控件组中的 NumericUpDown 控件看起来像是一个文本框与一对用户可单击以调整值的箭头的组合。可以通过单击向上和向下按钮、按向上和向下箭头键来增大和减小数字,也可以直接输入数字。单击向上箭头键时,值向最大值方向增加;单击向下箭头键时,值向最小值方向减少。该控件在工具箱中的图标为 。 该控件的样式如图9-13所示。
1、常用属性:
(1)DecimalPlaces:获取或设置该控件中显示的小数位数。
(2)Hexadecimal:获取或设置一个值,该值指示该控件是否以十六进制格式显示所包 含的值。
(3)Increment:获取或设置单击向上或向下按钮时,该控件递增或递减的值。
(4)Maximum:获取或设置该控件的最大值。
(5)Minimum:获取或设置该控件的最小值。
(6)Value:获取或设置该控件的当前值。 与 TextBox控件一样,NumericUpDown控件的常用事件有:ValueChanged、GotFocus、LostFocus等。
================================================================================================
按钮类控件
6、Button 控件
Button控件又称按钮控件,是 Windows应用程序中最常用的控件之一,通常用它来执行命令。如果按钮具有焦点,就可以使用鼠标左键、Enter键或空格键触发该按钮的Click事件。通过设置窗体的AcceptButton或 CancelButton 属性,无论该按钮是否有焦点,都可以使用户通过按 Enter 或 Esc 键来触发按钮的Click事件。一般不使用 Button 控件的方法。Button 控件也具有许多如 Text、ForeColor 等的常规属性,此处不再介绍,只介绍该控件有特色的属性。以后介绍的控件也采用同样的方法来处理。
1、常用属性
(1)DialogResult属性:当使用ShowDialog方法显示窗体时,可以使用该属性设置当用户按了该按钮后,ShowDialog方法的返回值。值有:OK、Cancel、Abort、Retry、Ignore、Yes、No等。
(2)Image属性:用来设置显示在按钮上的图像。
(3)FlatStyle属性:用来设置按钮的外观。其取值及含义如表9-7 所示。
2、常用事件:
(1)Click事件:当用户用鼠标左键单击按钮控件时,将发生该事件。
(2)MouseDown事件:当用户在按钮控件上按下鼠标按钮时,将发生该事件。
(3)MouseUp事件:当用户在按钮控件上释放鼠标按钮时,将发生该事件。
------------------------------------------------------------------------------------------------
7、GroupBox 控件
GroupBox控件又称为分组框,它在工具箱中的图标是 。该控件常用于为其他控件提供可识别的分组,其典型的用法之一就是给RadioButton控件分组。可以通过分组框的Text属性为分组框中的控件向用户提供提示信息,如图 9-14 所示。设计时,向GroupBox 控件中添加控件的方法有两种:一是直接在分组框中绘制控件;二是把某一个已存在的控件复制到剪贴板上,然后选中分组框,再执行粘贴操作即可。位于分组框中的所有控件随着分组框的移动而一起移动,随着分组框的删除而全部删除,分组框的Visible属性和Enabled属性也会影响到分组框中的所有控件。分组框的最常用的属性是Text,一般用来给出分组提示。
------------------------------------------------------------------------------------------------
8、RadioButton控件
RadioButton又称单选按钮,其在工具箱中的图标为 ,单选按钮通常成组出现,用于提供两个或多个互斥选项,即在一组单选钮中只能选择一个,如图9-14所示。
1、常用属性:
(1)Checked属性:用来设置或返回单选按钮是否被选中,选中时值为true,没有选中时值为false。
(2)AutoCheck 属性:如果 AutoCheck 属性被设置为 true(默认),那么当选择该单选按钮时,将自动清除该组中所有其他单选按钮。对一般用户来说,不需改变该属性,采用默认值(true)即可。
(3)Appearance 属性:用来获取或设置单选按钮控件的外观。当其取值为 Appearance.Button 时,将使单选按钮的外观像命令按钮一样:当选定它时,它看似已被按下。当取值为 Appearance.Normal 时,就是默认的单选按钮的外观。
(4)Text属性:用来设置或返回单选按钮控件内显示的文本,该属性也可以包含访问键,即前面带有“&”符号的字母,这样用户就可以通过同时按Alt键和访问键来选中控件。
2、常用事件:
(1)Click事件:当单击单选按钮时,将把单选按钮的Checked属性值设置为true,同时发生Click事件。
(2)CheckedChanged事件:当Checked属性值更改时,将触发CheckedChanged事件。
------------------------------------------------------------------------------------------------
9、CheckBox 控件
CheckBox控件的常用属性如下。
(1)TextAlign属性:用来设置控件中文字的对齐方式,有9种选择,如图9-16 所示。 从上到下、从左至右分别是:ContentAlignment.TopLeft、ContentAlignment.TopCenter、 ContentAlignment.TopRight、ContentAlignment.MiddleLeft、ContentAlignment.MiddleCenter、 ContentAlignment.MiddleRight、ContentAlignment.BottomLeft、ContentAlignment.BottomCenter 和 ContentAlignment.BottomRight。该属性的默认值为ContentAlignment.MiddleLeft,即文字左 对齐、居控件垂直方向中央。
(2)ThreeState属性:用来返回或设置复选框是否能表示三种状态,如果属性值为true时,表示可以表示三种状态—选中、没选中和中间态(CheckState.Checked、CheckState.Unchecked 和 CheckState.Indeterminate),属性值为false时,只能表示两种状 态——选中和没选中。
(3)Checked属性:用来设置或返回复选框是否被选中,值为true时,表示复选框被选中,值为false时,表示复选框没被选中。当ThreeState属性值为true时,中间态也表示选中。
(4)CheckState 属性:用来设置或返回复选框的状态。在 ThreeState 属性值为 false 时,取值有CheckState.Checked或CheckState.Unchecked。在ThreeState属性值被设置为True时,CheckState还可以取值 CheckState.Indeterminate,在此时,复选框显示为浅灰色选中状态,该状态通常表示该选项下的多个子选项未完全选中。 CheckBox控件的常用事件有Click和CheckedChanged等,其含义及触发时机与单选按钮完成一致。
================================================================================================
列表类控件
10、ListBox 控件
ListBox 控件又称列表框,它在工具箱中的图标为,它显示一个项目列表供用户选择。在列表框中,用户一次可以选择一项,也可以选择多项。
1、常用属性:
(1) Items属性: 用于存放列表框中的列表项,是一个集合。通过该属性,可以添加列表项、移除列表项和获得列表项的数目。
(2)MultiColumn 属性:用来获取或设置一个值,该值指示ListBox是否支持多列。值 为 true 时表示支持多列,值为 false 时不支持多列。当使用多列模式时,可以使控件得以显示更多可见项,如图9-19 所示。
(3)ColumnWidth 属性:用来获取或设置多列 ListBox控件中列的宽度。
(4)SelectionMode属性:用来获取或设置在ListBox控件中选择列表项的方法。当 SelectionMode属性设置为 SelectionMode.MultiExtended 时,按下 Shift 键的同时单击鼠标或者同时按 Shift 键和箭头键之一(上箭头键、下箭头键、左箭头键和右箭头键),会将选定内容从前一选定项扩展到当前项。按 Ctrl 键的同时单击鼠标将选择或撤销选择列表中的某项;当该属性设置为 SelectionMode.MultiSimple 时,鼠标单击或按- 11 - 空格键将选择或撤销选择列表中的某项;该属性的默认值为SelectionMode.One,则只能选择一项。
(5)SelectedIndex属性:用来获取或设置ListBox控件中当前选定项的从零开始的索引。如果未选定任何项,则返回值为1。对于只能选择一项的ListBox控件,可使用此属性确定ListBox中选定的项的索引。如果 ListBox 控件的 SelectionMode 属性设置为 SelectionMode.MultiSimple 或 SelectionMode.MultiExtended,并在该列表中选定多个项,此时应用SelectedIndices来获取选定项的索引。
(6)SelectedIndices。该属性用来获取一个集合,该集合包含 ListBox 控件中所有选定项的从零开始的索引。
(7)SelectedItem属性:获取或设置ListBox中的当前选定项。
(8)SelectedItems属性:获取 ListBox控件中选定项的集合,通常在ListBox控件的SelectionMode属性值设置为SelectionMode.MultiSimple或SelectionMode.MultiExtended(它指示多重选择ListBox)时使用。
(9)Sorted属性:获取或设置一个值,该值指示ListBox控件中的列表项是否按字母顺序排序。如果列表项按字母排序,该属性值为true;如果列表项不按字母排序,该属性值为false。默认值为false。在向已排序的 ListBox控件中添加项时,这些项会移动到排序列表中适当的位置。
(10)Text 属性:该属性用来获取或搜索 ListBox 控件中当前选定项的文本。当把此属性值设置为字符串值时,ListBox 控件将在列表内搜索与指定文本匹配的项并选择该项。若在列表中选择了一项或多项,该属性将返回第一个选定项的文本。
(11)ItemsCount属性:该属性用来返回列表项的数目。
2、常用方法:
(1)FindString方法:用来查找列表项中以指定字符串开始的第一个项,有两种调用格式。
[格式1]:
ListBox对象.FindString(s);
[功能]:在“ListBox 对象”指定的列表框中查找字符串 s,如果找到则返回该项从零开始的索引;如果找不到匹配项,则返回ListBox.NoMatches。
[格式2]:
ListBox对象.FindString(s,n);
[功能]:在 ListBox 对象指定的列表框中查找字符串 s,查找的起始项为n+1,即 n 为开始查找的前一项的索引。如果找到则返回该项从零开始的索引;如果找不到匹配项,则返回ListBox.NoMatches。 注意:FindString 方式只是词语部分匹配,即要查找的字符串在列表项的开头,便认为是匹配的,如果要精确匹配,即只有在列表项与查找字符串完全一致时才认为匹配,可使用FindStringExact方法,调用格式与功能与FindString基本一致。
(2)SetSelected方法:用来选中某一项或取消对某一项的选择,调用格式及功能如下。
[格式]:
ListBox对象.SetSelected(n,l);
[功能]:如果参数 l 的值是 true,则在 ListBox 对象指定的列表框中选中索引为 n 的列表项,如果参数l 的值是 false,则索引为n 的列表项未被选中。
(3)Items.Add方法:用来向列表框中增添一个列表项,调用格式及功能如下。
[格式]:
ListBox对象.Items.Add(s);
[功能]:把参数s添加到“listBox对象”指定的列表框的列表项中。
(4)Items.Insert方法:用来在列表框中指定位置插入一个列表项,调用格式及功能如下。
[格式]:
ListBox对象.Items.Insert(n,s);
[功能]:参数n代表要插入的项的位置索引,参数 s代表要插入的项,其功能是把s插入到“listBox对象”指定的列表框的索引为n的位置处。
(5)Items.Remove方法:用来从列表框中删除一个列表项,调用格式及功能如下。
[格式]:
ListBox对象.Items.Remove(k);
[功能]:从 ListBox对象指定的列表框中删除列表项s。
(6)Items.Clear方法:用来清除列表框中的所有项。其调用格式如下:
[格式]:
ListBox对象.Items.Clear();
该方法无参数。
(7)BeginUpdate方法和EndUpdate方法:这两个方法均无参数,调用格式分别如下:
[格式]:
ListBox对象.BeginUpdate();
ListBox对象.EndUpdate();
这两个方法的作用是保证使用 Items.Add 方法向列表框中添加列表项时,不重绘列表框。即在向列表框添加项之前,调用BeginUpdate方法,以防止每次向列表框中添加项时都重新绘制 ListBox 控件。完成向列表框中添加项的任务后,再调用 EndUpdate 方法使 ListBox 控件重新绘制。当向列表框中添加大量的列表项时,使用这种方法添加项可以防止在绘制 ListBox 时的闪烁现象。一个例子程序如下:
publicvoidAddToMyListBox() { listBox1.BeginUpdate(); for(intx=1;x<5000;x++) { listBox1.Items.Add("Item"+x.ToString()); } listBox1.EndUpdate(); }
privatevoidCopyWithProgress(string[]filenames) { pBar1.Visible=true; pBar1.Minimum=1; pBar1.Maximum=filenames.Length; pBar1.Value=1; pBar1.Step=1; for(intx=1;x<=filenames.Length;x++) { if(CopyFile(filenames[x-1])==true) { pBar1.PerformStep(); } } }
3.菜单合并
父窗体和子窗体可以使用不同的菜单,这些菜单会在选择子窗体的时候合并。如果需要指定菜单的合并方式,程序员可以设置每个菜单项的MergeOrder属性和MergeType属性。
(1)MergeOrder属性:用来确定当两个菜单合并时菜单项出现的顺序,具有较低 MergeOrder的菜单项会首先出现。
(2)MergeType属性:当合并的两个菜单的某些菜单项的MergeOrder属性值相等时, 使用该属性可以控制这些菜单项的显示方式。其取值及含义如表10-4所示。
================================================================================================
26、键盘事件处理
键盘事件在用户按下键盘上的键时发生,可分为两类。第一类是KeyPress事件,当按下的键表示的是一个ASCII 字符时就会触发这类事件,可通过它的 KeyPressEventArgs 类型参数的属性 KeyChar 来确定按下键的 ASCII 码。使用 KeyPress 事件无法判断是否按下了修改键(例如 Shift,Alt 和 Ctrl 键),为了判断这些动作, 就要处理KeyUp 或KeyDown事件, 这些事件组成了第二类键盘事件。 该类事件有一个KeyEventArgs类型的参数,通过该参数可以测试是否按下了一些修改键、功能键等特殊按键信息。
1.KeyPressEventArgs类的主要属性(KeyPress事件的一个参数类型)
(1)Handled属性:用来获取或设置一个值,该值指示是否处理过KeyPress事件。
(2)KeyChar属性:用来获取按下的键对应的字符,通常是该键的ASCII码。
2.KeyEventArgs类的主要属性(KeyUp和 KeyDown事件的一个参数)
(1)Alt属性:用来获取一个值,该值指示是否曾按下Alt键。
(2)Control属性:用来获取一个值,该值指示是否曾按下Ctrl键。
(3)Shift属性:用来获取一个值,该值指示是否曾按下Shift键。
(4)Handled属性:用来获取或设置一个值,该值指示是否处理过此事件。
(5)KeyCode属性:以 Keys枚举型值返回键盘键的键码,该属性不包含修改键(Alt、Control和 Shift键)信息,用于测试指定的键盘键。
(6)KeyData 属性:以 Keys 枚举类型值返回键盘键的键码,并包含修改键信息,用于判断关于按下键盘键的所有信息。
(7)KeyValue属性:以整数形式返回键码,而不是Keys枚举类型值。用于获得所按下键盘键的数字表示。
(8)Modifiers 属性:以 Keys 枚举类型值返回所有按下的修改键(Alt、Control 和 Shift 键),仅用于判断修改键信息。
------------------------------------------------------------------------------------------------
27、鼠标事件处理
对鼠标操作的处理是应用程序的重要功能之一,在VisualC#中有一些与鼠标操作相关的事件,利用它们可以方便地进行与鼠标有关的编程。
(1)MouseEnter事件:在鼠标指针进入控件时发生。
(2)MouseMove事件:在鼠标指针移到控件上时发生。事件处理程序接收一个MouseEventArgs类型的参数,该参数包含与此事件相关的数据。该参数的主要属性及其含义如下。
Button属性:用来获取曾按下的是哪个鼠标按钮。该属性是MouseButtons枚举型的值, 取值及含义如下:Left(按下鼠标左按钮)、Middle(按下鼠标中按钮)、Right(鼠标右按钮)、None(没有按下鼠标按钮)、 XButton1 (按下了第一个XButton按钮, 仅用于Microsoft智能鼠标浏览器) 和XButton2(按下了第二个XButton按钮,仅用于 Microsoft智能鼠标浏览器)
Clicks属性:用来获取按下并释放鼠标按钮的次数。
Delta属性:用来获取鼠标轮已转动的制动器数的有符号计数。制动器是鼠标轮的一个凹口。
X 属性:用来获取鼠标所在位置的x坐标。
Y 属性:用来获取鼠标所在位置的y坐标。
(3)MouseHover事件:当鼠标指针悬停在控件上时将发生该事件。
(4)MouseDown事件:当鼠标指针位于控件上并按下鼠标键时将发生该事件。事件处理程序也接收一个MouseEventArgs类型的参数。
(5)MouseWheel事件:在移动鼠标轮并且控件有焦点时将发生该事件。该事件的事件处理程序接收一个MouseEventArgs类型的参数
(6)MouseUp 事件:当鼠标指针在控件上并释放鼠标键时将发生该事件。事件处理程序也接收一个MouseEventArgs类型的参数。
(7)MouseLeave事件:在鼠标指针离开控件时将发生该事件。
=======================================================================================
=======================================================================================
有一点让许多刚接触WinForms编程的开发者感到很棘手,就是在用户调整各种控件的大小时,怎样使它们的窗体保持同步,并与父窗体相称。这可以成为一种让人非常沮丧的情况,尤其是对于有着Web编程背景,转为WinForms的开发者来说。
为了缓解这个问题,.NET框架允许你对子控件设置属性,命令在调整父窗体大小时,它们应该如何运作。用来命令控件在调整大小时动作的两个属性就是“Dock”和“Anchor”。
Dock和Anchor通过将控件连接到它们父窗体的某个位置,而免除了使应用程序具有不可预知界面的麻烦。最好的一点就是设立这些属性不需要任何手写代码。所有事情都可以通过Visual Studio IDE中的点和单击来完成。
Anchor属性
正如名称暗示的那样,这个属性迫使控件将其自身定位在父窗体或父控件中的某个相对或绝对位置。这个属性有四个可以开启或关闭的值:
要对一个控件设置Anchor属性,只需在Visual Studio设计器中选择控件,然后转到属性窗口。你会看到一个标注为“Anchor”的属性。点击这个属性值的部分,会出现一个小窗口让你选择想要赋予控件的锚点。图表A所示是选择了“顶边、左边”的anchor设置窗口。图表B所示是选择了“底边、右边”的窗口。
图表A |
Anchor工具顶部和左边 |
图表B |
Anchor工具底部和右边 |
在Visual Studio中,当控件放置于窗体时,默认的anchor设置是“顶部、左边”,这使得控件和窗体的顶边和左边缘固定相关。
到真正发现不同的anchor设置对控件的影响时,你才能体会到锚定的意义。下面的图像会有所帮助。
图表C |
|
小窗口 |
图表C所示是一个有十个子控件的窗体。每一个子控件都有不同的Anchor属性值,并用它的anchor设置标注。灰白色控件后面的深红色框是另一个子控件——它的Anchor属性被设为顶部、底部、左边和右边。图表D所示是区域被调大以后的同一个窗体。
图表D |
大窗口 |
正如你所看到的那样,每一个控件在父窗体中都自动地保持它的位置。我们没有编写代码来完成这一点;只是简单地设置了控件的Anchor属性。
有几个重要的地方不得不提。一个就是如果你没有指定一个控件有左或右锚定,它将在父窗体中保留一个相对左/右位置。如果你没有指定一个控件是否有顶部或底部锚定,也是一样的。对于这一点,一个很好的例子就是标注为“无Anchor”的控件。这样的控件没有锚定值,所以它只是漂浮在窗体中央。
另一个极端就是选择了所有anchor值的控件(顶部、底部、左边、右边)。对这一点,图表C和图表D中其它控件后面的深红色方形可见物就是一个例子。当选择了所有的anchor值时,控件只是在调整父窗体大小时,随着增大和收缩——与窗体的边缘比较起来它的所有边缘保持静止不变。
Dock属性
Dock属性迫使控件紧贴父窗体(或控件)的某个边缘。虽然Anchor属性也可以实现这一点,但是dock属性使得你能够在父窗体中让子窗体可以在上方(或旁边)互相“堆叠”。如果某个子窗体改变了大小,其它停驻在它旁边的子窗体也会随之改变。
和Anchor属性不同的是,你可以将Dock属性设置为一个单值。有效值如下所示:
要设置一个控件的Dock值,选择Visual Studio中的控件,然后转到属性窗口。你会看到一个标注为“Dock”的属性。点击这个属性的值的部分,会出现一个小窗口让你指定该控件将如何停驻。被赋予各种值的该窗体将显示在以下图像中(图表E、图表F和图表G):
图表E |
选择停驻左边 |
图表F |
|
选择停驻填充 |
图表G |
选择停驻顶部 |
和Anchor属性一样,直到发现它起了作用,你才会意识到它们的重要意义。图表H所示的是一个有5个子控件的窗体,每个子窗体都设置了不同的dock值。
图表H |
|
有不同dock值的5个子控件 |
图表I所示的是和图表H一样的窗口,除了一点,就是现在窗口已经被调整为更大的轨迹。
图表I |
更大的轨迹 |
图表J又显示的是和图表H一样的窗口,这次不同的是位于窗体底部、顶部、左边和右边的控件变小了。注意位于窗体中间被设置为dock Fill的控件,自动变大了。
图表J |
|
更小的轨迹 |
需要记住的是,对于Dock属性,添加控件的顺序会影响它们停驻的方式。例如,如果你对窗体添加控件A,指示其停驻填充,然后你对窗体添加控件B并指示其停驻顶部,控件B将覆盖控件A的上部。原因就是控件B被认为是在控件A的“前方”,因为它是在控件A之后添加的。
要解决这种情况,你必须在Visual Studio中右击控件A,并在上下文菜单中选择“放到前面(Bring To Front)”。这样就能使控件A出现在控件B的前方,控件也就能像预期的那样运作了。