精华内容
下载资源
问答
  • Winform控件属性事件介绍

    千次阅读 2016-08-28 13:10:05
    2、Label控件 3、TextBox控件 4、RichTextBox控件 5、NumericUpDown控件 6、Button控件 7、GroupBox控件 8、RadioButton控件 9、CheckBox控件 10、ListBox控件 11、ComboBox控件 12、CheckedListBox控件 13、...

                                                                                                  

    1、窗体

    1、常用属性

    (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。

    (2) WindowState属性: 用来获取或设置窗体的窗口状态。取值有三种: Normal (窗体正常显示)、 Minimized

    (窗体以最小化形式显示)和Maximized(窗体以最大化形式显示)。

    (3)StartPosition属性:用来获取或设置运行时窗体的起始位置。其取值及含义如表9-1 所示。默认的起

    始位置是WindowsDefaultLocation。

     

    (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 属性:用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。如果控件可- 3 -

     

    以对用户交互作出响应,则为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事件:该事件在用户单击窗体时发生。 - 4 -  

    (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 为三维边框。边框效果如图 9-8 所示。

    (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()该方法无参数。 - 6 -

     

    (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、常用方法 - 7 -

     

    前面介绍的 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(文件名); - 8 –

    [功能]:将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 时,鼠标单击或按空格键将选择或撤销选择列表中的某项;该属性的默认值为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();

    }

    ListBox控件常用事件有Click和SelectedIndexChanged,SelectedIndexChanged事件在列表框中改变选中项时发生。

    11、ComboBox 控件

    ComboBox 控件又称组合框,在工具箱中的图标为。默认情况下,组合框分两个部分显示:顶部是一个允许输入文本的文本框,下面的列表框则显示列表项。可以认为ComboBox就是文本框与列表框的组合,与文本框和列表框的功能基本一致。与列表框相比,组合框不能多选,它无 SelectionMode 属性。但组合框有一个名为DropDownStyle的属性,该属性用来设置或获取组合框的样式,其取值及含义如表9-10所示。   

    组合框的各种样式如图9-22所示, 左边的组合框能够通过文本框输入文本,中间的组合框则不能输入文本,只能选择列表项。

    12、CheckedListBox 控件

    CheckedListBox控件又称复选列表框,它扩展了ListBox控件,它几乎能完成列表框可以完成的所有任务,并且还可以在列表项旁边显示复选标记。两种控件间的其他差异在于,复选列表框只支持- 13 -

     

    DrawMode.Normal,并且复选列表框只能有一项选定或没有任何选定。此处需要注意一点:选定的项是指

    窗体上突出显示的项,已选中的项是指左边的复选框被选中的项。复选列表框的样式如图9-23所示。

    除具有列表框的全部属性外,它还具有以下属性。

    (1)CheckOnClick属性:获取或设置一个值,该值指示当某项被选定时是否应切换左侧的复选框。如果立即切换选中标记,则该属性值为true;否则为false。默认值为false。

    (2)CheckedItems 属性:该属性是复选列表框中选中项的集合,只代表处于CheckState.Checked或CheckState.Indeterminate状态的那些项。 该集合中的索引按升序排列。

    (3)CheckedIndices 属性:该属性代表选中项(处于选中状态或中间状态的那些项)索引的集合。

    13、PictureBox 控件的使用

    PictureBox 控件又称图片框,常用于图形设计和图像处理应用程序,在该控件中可以加载的图像文件格式有:位图文件(.Bmp)、图标文件(.ICO)、图元文件(.wmf)、.JPEG 和.GIF 文件。下而仅介绍该控件的常用属性和事件。

    1、常用属性:

    (1)Image属性:用来设置控件要显示的图像。把文件中的图像加载到图片框通常采用以下三种方式。

    设计时单击Image属性,在其后将出现【…】按钮,单击该按钮将出现一个【打开】对话框,在该对话框中找到相应的图形文件后单击【确定】按钮。产生一个Bitmap类的实例并赋值给Image属性。形式如下: 

    Bitmapp=newBitmap(图像文件名);

    pictureBox对象名.Image=p;

    通过Image.FromFile方法直接从文件中加载。形式如下:

    pictureBox对象名.Image=Image.FromFile(图像文件名);

    (2)SizeMode属性:用来决定图像的显示模式。其取值有四种情况,取值及含义如表9-11所示。各种模式下的图片显示样式如图9-24所示。

     

    14、Timer 控件

    Timer 控件又称定时器控件或计时器控件,在工具箱中的图标是,该控件的主要作用是按一定的时间间隔周期性地触发一个名为Tick的事件, 因此在该事件的代码中可以放置一些需要每隔一段时间重复执行的程序段。在程序运行时,定时器控件是不可见的。

    1、常用属性:

    (1)Enabled 属性:用来设置定时器是否正在运行。值为 true 时,定时器正在运行,值为 false 时,定时器不在运行。

    (2)Interval属性:用来设置定时器两次Tick事件发生的时间间隔,以毫秒为单位。如它的值设置为500,则将每隔0.5秒发生一个Tick事件。

    2、常用方法:

    (1)Start方法:用来启动定时器。调用的一般格式如下:

    Timer控件名.start(); 该方法无参数。

    (2)Stop方法:用来停止定时器。调用的一般格式如下:

    Timer控件名.stop(); 该方法无参数。

    3、常用事件:

    定义器控件响应的事件只有Tick,每隔Interval时间后将触发一次该事件。

    15、ProgressBar控件和 TrackBar控件

    1.ProgressBar控件

    ProgressBar 控件又称进度条控件,它在工具栏中的图标为,该控件在水平栏中显示适当长度的矩形来指示进程的进度。当执行进程时,进度条用系统突出显示颜色在水平栏中从左向右进行填充。进程完成时,进度栏被填满。当某进程运行时间较长时,如果没有视觉提示,用户可能会认为应用程序不响应,通过在应用程序中使用进度条,就可以告诉用户应用程序正在执行冗长的任务且应用程序仍在响应。

    ProgressBar控件的常用属性如下。

    (1)Maximum属性:用来设置或返回进度条能够显示的最大值,默认值为100。

    (2)Minimum属性:用来设置或返回进度条能够显示的最小值,默认值为0。

    (3)Value属性:用来设置或返回进度条的当前位置。

    (4)Step属性:用来设置或返回一个值,该值用来决定每次调用PerformStep 方法时,  Value属性增加的幅度。例如,如果要复制一组文件,则可将 Step 属性的值设置为 1,并将 Maximum 属性的值设置为要复制的文件总数。在复制每个文件时,可以调用PerformStep方法按Step属性的值增加进度栏。

    ProgressBar控件的常用方法如下。

    (1)Increment方法:用来按指定的数量增加进度条的值,调用的一般格式如下:

    progressBar对象.Increment(n);

    其功能是把“progressBar对象”指定的进度条对象的Value属性值增加n,n为整数。调用该方法之后,若Value属性大于Maximum属性的值,则 Value属性值就是Maximum值,若Value属性小于Minimum属性值,则 Value属性值就是Minimum值。

    (2)PerformStep方法:用来按step属性值来增加进度条的Value属性值,调用的一般格式如下:

    progressBar对象.PerformStep(); 该方法无参数。例如,下列程序段是一个显示复制多个文件的进度的进度条使用方法。

    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();

    }  

    }

    }

    ProgressBar控件能响应很多事件,但一般很少使用。

    2.TrackBar控件

    TrackBar 控件又称滑块控件、跟踪条控件,它在工具箱中的图标是“” 。该控件主要用于在大量信息中进行浏览,或用于以可视形式调整数字设置。TrackBar控件有两部分:缩略图(也称为滑块)和刻度线。缩略图是可以调整的部分,其位置与 Value 属性相对应。刻度线是按规则间隔分隔的可视化指示符。跟踪条控件可以按指定的增量移动,并且可以水平或者垂直排列。

    TrackBar控件的常用属性如下。

    (1)Maximum属性:用来获取或设置TrackBar控件可表示的范围上限,即最大值。

    (2)Minimum属性:用来获取或设置TrackBar控件可表示的范围下限,即最小值。

    (3)Orientation属性:用来获取或设置一个值,该值指示跟踪条是在水平方向还是在垂

    直方向。

    (4)LargeChange属性:用来获取或设置一个值,该值指示当滑块长距离移动时应为Value属性中加上或

    减去的值。

    (5)SmallChange属性:用来获取或设置当滑块短距离移动时对Value属性进行增减的值。

    (6)Value属性:用来获取或设置滑块在跟踪条控件上的当前位置的值。

    (7)TickFrequency属性:用来获取或设置一个值,该值指定控件上绘制的刻度之间的增量。

    (8)TickStyle 属性:用来获取或设置一个值,该值指示如何显示跟踪条上的刻度线。该属性的取值及含义如表9-12 所示。

    TrackBar控件的常用事件是ValueChanged,该事件在TrackBar控件的Value属性值改变时发生。

    16、HScrollBar 控件和 VScrollBar控件的使用

    滚动条(ScrollBar)是大部分Windows应用程序中都具有的控件,是 Windows界面的

    一种常见元素,通常分为水平滚动条(HscrollBar)和垂直滚动条(VscrollBar)。HScrollBar

    在工具箱中的图标是,VScrollBar控件在工具箱中的图标是。这两

    个控件主要用于在应用程序或控件中水平或垂直滚动,以方便在较长的列表中或大量信息中

    转移。

    1、常用属性:

    (1)Minimum和 Maximum属性:与TrackBar控件的同名属性基本相同。

    (2)Value属性:用于设置或返回滑块在滚动条中所处的位置,其默认值为0。当滑块的位置值为最小值时,滑块移到水平滚动条的最左端位置,或移到垂直滚动条的顶端位置。当滑块的位置值为最大值时,滑块移到水平滚动条的最右端位置或垂直滚动条的底端位置。

    (3)SmallChange和LargeChange属性:这两个属性主要用于调整滑块移动的距离。其

    中 SmallChange属性用于控制当鼠标单击滚动条两边的箭头时,滑块滚动的值,即 Value属性增加或减小的值。而LargeChange属性则控制当用鼠标直接单击滚动条时滑块滚动的值。当用户按下PageUp键或PageDown键或者在滑块的任何一边单击滚动条轨迹时,Value属性将按照 LargeChange属性中设置的值进行增加或减小。

    2、常用事件:

    (1)Scroll事件:该事件在用户通过鼠标或键盘移动滑块后发生。

    (2)ValueChanged事件:该事件在滚动条控件的Value属性值改变时发生。滚动条的使用方法与TrackBar控件基本一致,此处不再赘述。  

    对话框类控件

    17、OpenFileDialog 控件

    OpenFileDialog控件又称打开文件对话框,主要用来弹出Windows中标准的【打开文件】

    对话框。该控件在工具箱中的图标为 。

    OpenFileDialog控件的常用属性如下。

    (1)Title属性:用来获取或设置对话框标题,默认值为空字符串("")。如果标题为空字符串,则系统将使用默认标题:“打开” 。

    (2)Filter属性:用来获取或设置当前文件名筛选器字符串,该字符串决定对话框的【另存为文件类型】或【文件类型】框中出现的选择内容。对于每个筛选选项,筛选器字符串都包含筛选器说明、垂直线条(|)和筛选器模式。不同筛选选项的字符串由垂直线条隔开,例如: “文本文件(*.txt)|*.txt|所有文件(*.*)|*.*” 。还可以通过用分号来分隔各种文件类型,可以将多个筛选器模式添加到筛选器中,例如:“图像文件(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|所有文件(*.*)|*.*” 。

    (3)FilterIndex属性:用来获取或设置文件对话框中当前选定筛选器的索引。第一个筛选器的索引为1,默认值为1。

    (4)FileName 属性:用来获取在打开文件对话框中选定的文件名的字符串。文件名既包含文件路径也包含扩展名。如果未选定文件,该属性将返回空字符串("")。

    (5)InitialDirectory属性:用来获取或设置文件对话框显示的初始目录,默认值为空字符串("")。 - 17 -

     

    (6)ShowReadOnly属性:用来获取或设置一个值,该值指示对话框是否包含只读复选框。如果对话框包含只读复选框,则属性值为true,否则属性值为false。默认值为false。

    (7)ReadOnlyChecked属性:用来获取或设置一个值,该值指示是否选定只读复选框。如果选中了只读复选框,则属性值为true,反之,属性值为false。默认值为false。

    (8)Multiselect属性:用来获取或设置一个值,该值指示对话框是否允许选择多个文件。如果对话框允许同时选定多个文件,则该属性值为true,反之,属性值为false。默认值为false。

    (9)FileNames属性:用来获取对话框中所有选定文件的文件名。每个文件名都既包含文件路径又包含文件扩展名。如果未选定文件,该方法将返回空数组。

    (10)RestoreDirectory属性:用来获取或设置一个值,该值指示对话框在关闭前是否还原当前目录。假设用户在搜索文件的过程中更改了目录,且该属性值为 true,那么,对话框会将当前目录还原为初始值,若

    该属性值为 false,则不还原成初始值。默认值为 false。OpenFileDialog 控件的常用方法有两个:OpenFile和 ShowDialog方法,本节只介绍ShowDialog方法,该方法的作用是显示通用对话框,其一般调用形式如下: 通用对话框对象名.ShowDialog();

    通用对话框运行时,如果单击对话框中的【确定】按钮,则返回值为 DialogResult.OK;否则返回值为DialogResult.Cancel。其他对话框控件均具有ShowDialog方法,以后不再重复介绍。

    18、SaveFileDialog 控件

    SaveFileDialog 控件又称保存文件对话框,主要用来弹出 Windows 中标准的【保存文件】对话框。

    SaveFileDialog 控件也具有 FileName、Filter、FilterIndex、InitialDirectory、Title 等属性,这些属性的作用与 OpenFileDialog对话框控件基本一致,此处不再赘述。

    需注意的是:上述两个对话框只返回要打开或保存的文件名,并没有真正提供打开或保存文件的功能,程序员必须自己编写文件打开或保存程序,才能真正实现文件的打开和保存功能。

    19、FontDialog 控件

    FontDialog控件又称字体对话框,主要用来弹出Windows中标准的【字体】对话框。字体对话框的作用是显示当前安装在系统中的字体列表,供用户进行选择。下面介绍字体对话框的主要属性

    (1)Font属性:该属性是字体对话框的最重要属性,通过它可以设定或获取字体信息。

    (2)Color属性:用来设定或获取字符的颜色。

    (3)MaxSize属性:用来获取或设置用户可选择的最大磅值。

    (4)MinSize属性:用来获取或设置用户可选择的最小磅值。192VisualC#.NET应用教程

    (5)ShowColor属性:用来获取或设置一个值,该值指示对话框是否显示颜色选择框。如果对话框显示颜色选择框,属性值为true,反之,属性值为false。默认值为false。

    (6)ShowEffects 属性:用来获取或设置一个值,该值指示对话框是否包含允许用户指定删除线、下划线和文本颜色选项的控件。如果对话框包含设置删除线、下划线和文本颜色选项的控件,属性值为 true,反之,属性值为false。默认值为true。

    20、ColorDialog控件

    ColorDialog 控件又称颜色对话框,主要用来弹出 Windows 中标准的【颜色】对话框。该控件在工具箱中的图标为。颜色对话框的作用是供用户选择一种颜色,并用 Color 属性记录用户选择的颜色值。下面介绍颜色对话框的主要属性。

    (1)AllowFullOpen属性:用来获取或设置一个值,该值指示用户是否可以使用该对话框定义自定义颜色。如果允许用户自定义颜色,属性值为true,否则属性值为false。默认值为true。

    (2)FullOpen 属性:用来获取或设置一个值,该值指示用于创建自定义颜色的控件在对话框打开时是否可见。值为true时可见,值为 false时不可见。

    (3)AnyColor 属性:用来获取或设置一个值,该值指示对话框是否显示基本颜色集中可用的所有颜色。值为 true时,显示所有颜色,否则不显示所有颜色。

    (4)Color属性:用来获取或设置用户选定的颜色。

    21、PrintDialog控件和 PrintDocument 控件

    PrintDialog 控件在工具箱中的图标是,PrintDocument 控件在工具箱中的图标是。使用PrintDialog控件可以显示Windows标准的【打印】对话框,在该对话框中用户可以选择打印机、选择要打印的页及页码范围等。需要注意的是:该对话框并不负责具体的打印任务,要想在应用程序中控制打印内容必须使用 PrintDocument 控件。关于这两个控件的详细使用方法读者可参阅相关资料或VisualC#的帮助文件。

    用户自定义对话框

    除了可以使用Windows自带的标准对话框外,用户还可以把自己设计的窗体定义成对话框。使用自定义对话框有以下几个要点。

    (1)将窗体的FormBorderStyle属性值设置为FixedDialog。

    (2)根据需要向窗体上添加控件。

    (3)使用窗体的ShowDialog方法显示窗体,即显示出对话框。

    22、用户自定义对话框

    除了可以使用Windows自带的标准对话框外,用户还可以把自己设计的窗体定义成对话框。使用自定义对话框有以下几个要点。

    (1)将窗体的FormBorderStyle属性值设置为FixedDialog。

    (2)根据需要向窗体上添加控件。

    (3)使用窗体的ShowDialog方法显示窗体,即显示出对话框。

    23、菜单控件

    Windows 的菜单系统是图形用户界面(GUI)的重要组成之一,在VisualC#中使用 MainMenu 控件可以很方便地实现Windows的菜单,MainMenu控件在工具箱中的图标为 。

    1.菜单的结构

    图 10-9和图10-10 是典型的菜单结构。其中有文字的单个命令称菜单项,顶层菜单项是横着排列的,单击某个菜单项后弹出的称为菜单或子菜单,它们均包含若干个菜单项,菜单项其实是 MenuItem 类的一个对象。菜单项有的是变灰显示的,表示该菜单项当前是被禁止使用的。有的菜单项的提示文字中有带下划线的字母,该字母称为热键(或访问键),若是顶层菜单,可通过按“ALT+热键”打开该菜单,若是某个子菜单中的一个选项,则在打开子菜单后直接按热键就会执行相应的菜单命令。有的菜单项后面有一个按键或组合键,称快捷键,在不打开菜单的情况下按快捷键,将执行相应的命令。在图 10-9 中,【保存文件】菜单项是加粗显示的,该菜单项称为默认项。图10-9的【另存为】和【退出】之间有一个灰色的线条,该线条称为分隔线或分隔符。在图 10-10 中菜单项【白色背景】前面有一个“√”号,称为选中标记,菜单项加上选中标记表示该菜单项代表的功能当前正在起作用。 

    2.菜单项的常用属性

    (1)Text 属性:用来获取或设置一个值,通过该值指示菜单项标题。当使用 Text 属性为菜单项指定标题时,还可以在字符前加一个“&”号来指定热键(访问键,即加下划线的字母)。例如,若要将“File”中的“F”指定为访问键,应将菜单项的标题指定为“&File” 。

    (2)Checked属性:用来获取或设置一个值,通过该值指示选中标记是否出现在菜单项文本的旁边。如果要放置选中标记在菜单项文本的旁边,属性值为true,否则属性值为false。默认值为false。

    (3)DefaultItem 属性:用来获取或设置一个值,通过该值指示菜单项是否为默认菜单项。值为true 时,是默认菜单项,值为false时,不是默认菜单项。菜单的默认菜单项以粗体的形式显示。当用户双击包含默认项的子菜单后,默认项被选定,然后子菜单关闭。

    (4)Enabled属性:用来获取或设置一个值,通过该值指示菜单项是否可用。值为true时表示可用,值为false表示当前禁止使用。

    (5)RadioCheck 属性:用来获取或设置一个值,通过该值指示选中的菜单项的左边是显示单选按钮还是选中标记。值为true时将显示单选按钮标记,值为false时显示选中标记。

    (6)Shortcut属性:用来获取或设置一个值,该值指示与菜单项相关联的快捷键。

    (7)ShowShortcut 属性:用来获取或设置一个值,该值指示与菜单项关联的快捷键是否在菜单项标题的旁边显示。如果快捷组合键在菜单项标题的旁边显示,该属性值为 true,如果不显示快捷键,该属性值为false。默认值为true。

    (8)MdiList属性:用来获取或设置一个值,通过该值指示是否用在关联窗体内显示的多文档界面(MDI)子窗口列表来填充菜单项。若要在该菜单项中显示MDI子窗口列表,则设置该属性值为true,否则设置该属性的值为false。默认值为false。

    3.菜单项的常用事件

    菜单项的常用事件主要有Click事件,该事件在用户单击菜单项时发生。

    24、多窗体程序设计

    Windows应用程序很少只由一个窗体组成,一般情况下一个应用程序均拥有很多个窗体。C#项目刚建立时只有一个名为Form1的窗体,要建立多窗体应用程序应首先为项目添加窗

    体,添加窗体的方法如下。

    (1) 单击工具栏上的按钮 或执行【项目】→【添加Windows窗体】命令,将会出现如图 10-17 所示的【添加新项】对话框。

    (2) 在该对话框的【模板】下面的列表框中  选中【Windows 窗体】图标,在【名称】文本框中输入窗体名,然后单击【打开】按钮,即为应用程序添加了一个窗体。

    25、MDI 应用程序设计

    1.MDI应用程序的概念

     

    在前面的章节中,所创建的都是单文档界面(SDI)应用程序。这样的程序(如记事本和画图程序)仅支持一次打开一个窗口或文档。如果需要编辑多个文档,必须创建SDI应用程序的多个实例。而使用多文档界面(MDI)程序(如Word和AdobePhotoshop)时,用户可以同时编辑多个文档。MDI程序中的应用程序窗口称为父窗口,应用程序内部的窗口称为子窗口。虽然MDI应用程序可以具有多个子窗口, 但是每个子窗口却只能有一个父窗口。此外,处于活动状态的子窗口最大数目是1。子窗口本身不能再成为父窗口,而且不能移动到它们的父窗口区域之外。除此以外,子窗口的行为与任何其他窗口一样(如可以关闭、最小化和调整大小等)。一个子窗口在功能上可能与父窗口的其他子窗口不同,例如,一个子窗口可能用于编辑图像,另一个子窗口可能用于编辑文本,第 3 个子窗口可以使用图形来显示数据,但是所有的窗口都属于相同的MDI父窗口。图 10-19 是一个典型的 MDI应用程序。外面的窗口是应用程序窗口,里面的两个小窗口是 MDI子窗口。 2.与 MDI应用程序设计有关的属性、方法和事件 常用的MDI父窗体属性如下。

    (1)ActiveMdiChild属性:该属性用来表示当前活动的MDI子窗口,如果当前没有子窗口,则返回null。

    (2)IsMdiContainer属性:该属性用来获取或设置一个值,该值指示窗体是否为多文档界面(MDI)子窗体的容器,即MDI父窗体。值为true时,表示是父窗体,值为false时,表示不是父窗体。

    (3)MdiChildren属性:该属性以窗体数组形式返回MDI子窗体,每个数组元素对应一个 MDI子窗体。

    常用的MDI子窗体的属性有:

     

    (1)IsMdiChild属性:该属性用来获取一个值,该值指示该窗体是否为多文档界面(MDI)的子窗体。值为 true时,表示是子窗体,值为false时,表示不是子窗体。

    (2)MdiParent属性:该属性用来指定该子窗体的MDI父窗体。与MDI应用程序设计有关的方法中,一

    般只使用父窗体的LayoutMdi方法,该方法的调用格式如下:

    MDI父窗体名.LayoutMdi(Value);

    该方法用来在MDI父窗体中排列MDI子窗体,以便导航和操作MDI子窗体。参数Value决定排列方式,

    取值有:MdiLayout.ArrangeIcons(所有 MDI 子窗体以图标的形式排列在 MDI 父窗体的工作区内)、MdiLayout.TileHorizontal (所有MDI子窗口均水平平铺在MDI父窗体的工作区内)、MdiLayout.TileVertical(所有 MDI 子窗口均垂直平铺在 MDI 父窗体的工作区内)和 MdiLayout.Cascade(所有 MDI 子窗口均层叠在 MDI 父窗体的工作区内)。常用的 MDI 父窗体的事件是 MdiChildActivate,当激活或关闭一个 MDI子窗体时将发生该事件。

    3.菜单合并

     

    父窗体和子窗体可以使用不同的菜单,这些菜单会在选择子窗体的时候合并。如果需要指定菜单的合并方式,程序员可以设置每个菜单项的MergeOrder属性和MergeType属性。 - 21 -

    (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事件:在鼠标指针离开控件时将发生该事件。 - 23 –

     

     

    28、排列窗体上的控件对齐

    窗体对齐的步骤:

    1.选择要对齐的控件

    2.在VS菜单中,选择“格式”→“对齐”选项,单击想要的对齐方式

    注:你选择的第一个控件是主控件,其他的控件都与他对齐。

     

    使用Anchor

    Anchor是锚定的意思,它的作用就是设置控件相对于窗体的某个边缘的距离保持不变,也就是说与窗体一起动态调整控件的大小,这是每个控件都有的属性。

    使用步骤:

    1.选择要锚定的控件2.在“属性”窗口中,单击Anchor属性右边的箭头,显示编辑器

    3.在显示的十字行上选择或清除控件锚定的边4.单击Anchor属性名,关闭编辑器

    使用Dock

    Dock是让控件始终保持在窗体的边缘,或者填充窗体

    使用步骤:

    1.      选择要停靠的控件在“属性”窗口中,单击Dock属性的右侧箭头,显示编辑器

    2.  设置停靠方式创建多文档界面应用程序(MDI)

        什么是MDI

        要在一个窗口中打开多个文件,就要使用MDI(多文档界面)应用程序

        MDI主要由两种窗口组成:父窗口和子窗口

        MDI的几个显著的特点:

    1.  启动一个MDI应用程序时,首先显示父窗体

    2.       它是应用程序中所有其他窗口的容器

    3.       每个应用程序界面都只能有一个MDI父窗体

    4.       在任何指定的时间都可以打开多个子窗体

    5.       任何MDI子窗体都不能移出MDI框架区域

    6.       关闭MDI父窗体则自动关闭所有打开的MDI子窗体

     

    如何创建MDI

    创建MDI步骤:

    1.  设置父窗体:将父窗体的IsMDICContainer属性设置为True

    2.      设置子窗体:在调用打开子窗体的Show()方法前,在代码中将子窗体的MdiParents属性设置为this

    为父窗体添加子窗体列表

    1.  在父窗体中添加一个菜单

    2.      添加一个“窗口”菜单项

    3.      将菜单控件的MdiWindowListItem属性设为“窗口”菜单项

     

     

     

    使用WinForms高级控件

     

    工具条(ToolStrip):

    使用工具条可以创建功能非常强大的工具栏,工具条控件可以包含按钮、标签、下拉按钮、文本框、组合框等,可以显示文字、图片或文字加图片。

    状态条(StatusStrip):状态条常常放在窗体的底部,用来显示一些基本信息。在状态条控件中可以包含标签、下拉按钮等,常常和工具条、菜单栏等配合使用。工具条和状态条的主要属性和事件

    属性

    说明

    ImageScalingSize

    工具条或状态条中的项显示的图像的大小

    Items

    在工具条或状态条上显示的项的集合

    DisplayStyle

    设置图像和文本的显示方式,包括显示文本、显示图像、显示文本和图像或什么都不显示

    Text

    按钮\标签上显示的文本

    Image

    按钮/标签上显示的图片

    事件

    说明

    Click

    单击按钮/标签时,触发该事件

    选项卡(TabControl)

    这个控件可以显示多个选项卡页,选项卡中可以包含图片和其他控件选项卡的主要属性

    属性

    说明

    MultiLine

    是否可以显示多行选项卡

    TabPages

    包含的选项卡页的集合

    SelectedIndex

    当前所选选项卡页的索引值

    图片框(PictureBox):

    用于显示位图、DIF、JEPG等格式的图片或这图标图片框的主要属性

    属性

    方法

    Image

    图片框显示的图片

    SizeMode

    指定如何处理图片的位置和控件的大小

     

    图像列表框(ImageList):

    用于储存Windows窗体其他控件使用的图像图像列表框的主要属性

    属性

    方法

    Images

    储存在图像列表中的所有图像

    ImageSize

    图像列表中图像的大小

    TransparentColor

    被视为透明的颜色

    Image中存放的图像就像存放在数组中一样,每个图像都有一个索引值,从0开始,使用Image[索引值],可以定位到一个图像。

     

    展开全文
  • 创建一个ActiveX 控件

    千次阅读 2004-12-14 19:59:00
    即开发者在设计一个控件实例放入窗体控件中的一些代码将会执行。2.控件中诸如位图之类的二进制信息会保存到一个同名的二进制文件中,该文件的扩展名为 .ctx 。3.为了调试控件设计的行为,当放置有...

    2004年12月14日  19:46:07

    欢迎来到充满活力的创建控件的拓荒之地。


    1.与其它可编程对象不同,控件同时具有设计时和运行时的两种行为。 即开发者在设计时把一个控件实例放入窗体时,控件中的一些代码将会执行。
    2.控件中诸如位图之类的二进制信息会保存到一个同名的二进制文件中,该文件的扩展名为 .ctx 。
    3.为了调试控件设计时的行为,当放置有控件的测试窗体保持在设计模式中时,必须能够执行控件中的代码。
    4.不要单击工具栏上的“启动”按钮或者按下 F5 键,因为那样会使整个工程组进入运行模式从而无法把新控件添加到窗体中。
    5.打开一个控件的设计器会使该控件的所有实例变成非活动的。 更改控件代码窗口的代码也会使控件实例变成非活动的。
    6.UserControl 存活期中的关键事件是 Initialize,InitProperties,ReadProperties,WriteProperties 和 Terminate。
    7.对于 UserControl 对象而言,Load 和 Unload 事件被ReadProperties 和 WriteProperties 事件所代替。
    8. 把控件放入窗体后,它就被视为这个窗体的永久设施了。以控件作者的眼光来看,控件总是在被撤消和重建。
    9.控件实例创建之后,可以通过 ReadProperties 事件,从包含此控件实例的窗体所属的 .frm 文件获取该控件所保存的属性值。
    10.运行时期的控件实例永远不会获得 WriteProperties 事件,因为它并不需要保存其属性值。这主要是出于 ShapeLabel 的未来的考虑。当它被编译成 .ocx 文件时,它会被添加到另一个工程,把一个实例放入窗体,将此工程编译成一个 .exe 文件并使其运行。 关闭该 .exe 文件时,ShapeLabel 实例能够保存其属性值的唯一地方就是该 .exe 文件。 而正常运作的操作系统不能容许这类行为.
    11.在对用户控件进行设计时,要记住只能在由控件的 ScaleWidth 和ScaleHeight 约束的区域内工作。这个区域以外的任何事物对用户都是不可见的。此外,客户区的大小将随着用户的想法而改变。于是 Resize 事件就是控件设计中最重要事件之一。
    12.与在类模块中添加属性名和方法类似,借助创建公共过程的方式,可以在 Active 控件中添加属性和方法。
    13.这就引入了一个控件的重复主题:容器能决定控件的大部分行为和外观。 容器确定控件的 Name,以及保持相对容器坐标关系的 Top 和 Left 属性。“
    14.使用属性过程所创建的一些简单属性将自动显示在 Visual Basic 的属性窗口中。 也可以使控件和属性页相连接,属性页以另一种格式显示控件的各种属性。
    15.属性页中象位图之类的二进制信息都被保存在名称相同的二进制文件中,该文件的扩展名为 .pgx。
    16.无论何时打开属性页均接收一个 SelectionChanged 事件。 选择控件列表改变时也接收这个事件。 这是必须的,因为“属性页”对话框为非模式对话框,当对话框打开时用户可能选择其他的一些控件。
    17.确定一个事件是否发生在特定的位置称为击点检测。或许会希望把击点检测代码放在 shpBack_Click 事件过程中,因为 shpBack 总是要改变大小以便覆盖 ShapeLabel 控件的整个表面。 然而 Shape 控件不会接收 Click 事件。而由包含 Shape 对象的对象来接收 Click 事件,就本例来说是 UserControl 对象。
    18.要切换回用工程代替二进制部件状态,可在“文件”菜单上单击“添加工程”并且将 ControlDemo 工程再添加到回工程组中。


    当创建一个新控件时一般应遵循的步骤是:

    1. 确定控件将要提供的功能。
    2. 设计控件的外观。
    3. 设计控件的接口,即将显露的属性、方法和控件。
    4. 创建由控件工程和测试工程组成的工程组。
    5. 通过把控件和或代码添加到 UserControl 对象中来实现控件的外观。
    6. 实现控件的接口和功能。
    7. 在添加每一个接口元素或功能时,都要为测试工程增加一些功能,以便测试所添加的新功能。
    8. 设计和实现控件的属性页。
    9. 编译控件部件(.ocx 文件)并用各种可能的应用程序对它进行测试。

    如果控件部件所提供的控件不止一个,应当从确定包中应包括那些控件着手工作。 对于单独的控件,测试工程应分别具有相应的测试窗体,另外,至少应有一个把控件放在一起测试的窗体。

     

     

     

     

     

     

    
    

     

     


     


     


     


     


     


     


     

     


     

     

     

     

     

     

     

     

    展开全文
  • 建立一个基于对话框的程序,在上面添加各种各样的控件,但是在View->ClassWizard->member varibles中找不到相应控件,无法为它们添加相应的成员变量!下面是CSDN上给出的答案:Static 要改ID后才能看到Radio 要选中属性...

    这是我在使用控件的过程中出现的一个问题,通过在CSDN上寻找答案和自己摸索,终于解决了!

    建立一个基于对话框的程序,在上面添加各种各样的控件,但是在View->ClassWizard->member varibles中找不到相应的控件,无法为它们添加相应的成员变量!

    下面是CSDN上给出的答案:

    Static 要改ID后才能看到

    Radio 要选中属性中的group才能看到

    后来自己搜一了会儿,找出了解决问题的办法:

    把VC关了,删了工程下面的.clw,.ncb,还有Debug目录,然后重新编译,然后就会提示将该对话框加入某个类,或者创建一个新类,然后就可以为这些控件添加成员变量了!

     

    展开全文
  • 自定义服务器控件中的事件

    千次阅读 2010-08-01 16:54:00
    它与页面生命周期几乎经历着同样的生命同期过程,比如OnInit事件它发生在页面OnInit事件之前,控件的Load事件发生在页面Load事件之后,PreRender事件发生在页面PreRender事件之后 Render事件发生在页面Render事件...

      自定义服务器控件也有自己的生命周期,它与页面生命周期几乎经历着同样的生命同期过程,比如OnInit事件它发生在页面OnInit事件之前,控件的Load事件发生在页面Load事件之后,PreRender事件发生在页面PreRender事件之后

    Render事件发生在页面Render事件之后,Unload事件发生在页面Unload事件之前,总之,它也分为6个阶段:

     1.初始化

     2.加载

     3.事件处理

     4.验证

     5.呈现

      6.卸载

     

    A.初始化阶段的事件包括PreInit与Init事件,InitCompleted事件它们分别对应页面方法OnPreInit(),OnInit(),OnInitCompleted()方法.其中PreInit事件与InitCompleted事件是Page对象特有,其中页面的方法还有Construct()(构造函数),ProcessRequest()方法

    InitializeCulture()方法(初始化文化信息)TrackViewState()(跟踪视图状态,使得架构能记录ViewState的状态更改,这个方法调用发生在Init事件与InitCompleted事件之间,PreInit事件一般用来设置主控页,Theme主题属性,设置IsPostBack,UICultrue属性,读取或设置配置文件属性值.Init事件发生在所有控件已初始化且已应用所有外观设置后引后。使用此事件来初始化控件属性

    B.页面为自身和控件加载视图状态(如果页面上设置了属性EnableViewState为false,则不加载视图状态,一般视图状态放在一个隐藏控件中传送)-》页面调用OnPreLoad()方法引发PreLoad事件-》引发Load事件--》递归调用页面中的子控件的OnLoad()方法,引发LOad事件,Page类的OnLoad()方法会自动的调用,但如果你重写了OnLoad()方法则要显示的调用它base.OnLoad(e);

    C.事件处理(RaisePostBackEvent)这个是引起回发事件,能够处理回发的控件必须实现System.web.UI.IPostbackDataHandler接口,此接口允许控件确定是否在回发改变后其状态以及引发相应的事件,它有两个方法public bool LoadPostData(String postDataKey,NameValueCollection collection);public void RaisePostChangedEvent();如果LoadPostData方法返回True,则页面框架在跟踪此控件时发现返回True ,则调用RaisePostChangedEvent()方法,该方法引发更改事件TextChanged事件,TextChanged事件在页面中可能订阅事件处理程序(OnTextChanged="Text_Changed")从而引发事件.

    D.验证(Validate)验证发生在装载与页面事件之后,因此在此之前如果要验证数据有效性,必须用到IsValidate属性

    E.呈现页面中的OnLoadComplete()方法引发LoadCompleted事件,OnPreRender方法引发preRender事件-->控件DataBind()方法-->调用OnDataBind()方法-->引发数据绑定事件-->OnPreRenderCompleted()引发PreRenderComplete事件-->SaveViewState()保存视图状态与控件状态-->OnSaveStateComplete()方法引发SaveStateComplete事件-->RendControl()-->Render()-->RenderChildren()

    F.卸载OnUnload()引发unload事件-->dispose()

     

     

    ASP.NET 页生命周期概述

    ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。了解页生命周期非常重要,因为这样做您就能在生命周期的合适阶段编写代码,以达到预期效果。

    如果您要开发自定义控件,就必须熟悉页生命周期,以便正确进行控件初始化,使用视图状态数据填充控件属性以及运行控件行为代码。控件的生命周期基于页的生命周期,但是页引发许多您需要在自定义控件中处理的事件。

    本主题包含以下各节:

    常规页生命周期阶段

    一般来说,页要经历下表概述的各个阶段。除了页生命周期阶段以外,在请求前后还存在应用程序阶段,但是这些阶段并不特定于页。有关更多信息,请参见 Introduction to the ASP.NET Application Life Cycle and IIS 7.0 的 ASP.NET 应用程序生命周期概述(ASP.NET 应用程序生命周期简介)。

    生命周期的某些部分仅当页处理为回发时才出现。对于回发,部分页回发过程中(当您使用 UpdatePanel 控件)与整页回发过程中的页生命周期是一样。

    阶段

    说明

    页请求

    页请求发生在页生命周期开始之前。用户请求页时,ASP.NET 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页的情况下发送页的缓存版本以进行响应。

    启动

    在启动阶段,将设置页属性,如 RequestResponse在此阶段,页还将确定请求是回发请求还是新请求,并设置 IsPostBack 属性。页还设置 UICulture 属性。

    初始化

    页初始化期间,可以使用页中的控件,并将设置每个控件的 UniqueID 属性。如果需要,还会向页应用于母版页和主题。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。

    加载

    加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。

    回发事件处理

    如果请求是回发请求,则将调用控件事件处理程序。之后,将调用所有验证程序控件的 Validate 方法,此方法将设置各个验证程序控件和页的 IsValid 属性。

    呈现

    在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,页会针对每个控件调用 Render 方法,它会提供一个文本编写器,用于将控件的输出写入页的 Response 属性的 OutputStream 对象中。

    卸载

    完全呈现页并已将页发送至客户端、准备丢弃该页后,将引发 Unload 事件。此时,将卸载页属性(如 ResponseRequest)并执行清理。

    生命周期事件

    在页生命周期的每个阶段中,页将引发可运行您自己的代码进行处理的事件。对于控件事件,通过以声明方式使用特性(如 onclick)或以使用代码的方式,均可将事件处理程序绑定到事件。

    页还支持自动事件连接,即,ASP.NET 将查找具有特定名称的方法,并在引发了特定事件时自动运行这些方法。如果 @ Page 指令的 AutoEventWireup 特性设置为 true,页事件将自动绑定至使用命名约定 Page_事件(如 Page_LoadPage_Init)的方法。有关自动事件连接的更多信息,请参见 ASP.NET Web 服务器控件事件模型

    下表列出了最常用的页生命周期事件。除了列出的事件外还有其他事件;不过,大多数页处理方案不使用这些事件。而是主要由 ASP.NET 网页上的服务器控件使用,以初始化和呈现它们本身。如果要编写自定义 ASP.NET 服务器控件,则需要详细了解这些事件。有关创建自定义控件的信息,请参见开发自定义 ASP.NET 服务器控件

    页事件

    典型使用

    PreInit

    在启动阶段完成之后、初始化阶段开始之前引发。

    使用该事件来执行下列操作:

    • 检查 IsPostBack 属性来确定是不是第一次处理该页。此时还设置了 IsCallbackIsCrossPagePostBack 属性。

    • 创建或重新创建动态控件。

    • 动态设置主控页。

    • 动态设置 Theme 属性。

    • 读取或设置配置文件属性值。

      说明说明
      如果请求是回发请求,则控件的值尚未从视图状态还原。如果在此阶段设置控件属性,则其值可能会在下一事件中被覆盖。

    Init

    在所有控件都已初始化且已应用所有外观设置后引发。各个控件的 Init 事件在页的 Init 事件之前发生。

    使用该事件来读取或初始化控件属性。

    InitComplete

    在页的初始化阶段结束时引发。InitInitComplete 事件之间仅发生一个操作:开启对视图状态更改的跟踪。视图状态跟踪使控件可以保留所有以编程方式添加到 ViewState 集合的值。在开启视图状态跟踪之前,所有添加到视图状态的值都会在回发期间丢失。控件通常在引发其 Init 事件后立即开启视图状态跟踪。

    使用此事件对要在下一个回发后务必保留的视图状态进行更改。

    PreLoad

    在页为自身和所有控件加载视图状态之后以及处理 Request 实例包括的回发数据之后引发。

    Load

    Page 对象对 Page 对象调用 OnLoad 方法,然后以递归方式对每个子控件执行相同操作,直到加载完本页和所有控件为止。各个控件的 Load 事件在页的 Load 事件之后发生。

    使用 OnLoad 事件方法来设置控件中的属性并建立数据库连接。

    控件事件

    使用这些事件来处理特定控件事件,如 Button 控件的 Click 事件或 TextBox 控件的 TextChanged 事件。

    说明说明
    在回发请求中,如果页包含验证程序控件,请在执行任何处理之前检查 Page 和各个验证控件的 IsValid 属性。

    LoadComplete

    在事件处理阶段结束时引发。

    对需要加载页上的所有其他控件的任务使用该事件。

    PreRender

    Page 对象创建呈现页所需的所有控件(包括组合控件的子控件)之后引发。(为���,Page 对象会针对每个控件和页调用 EnsureChildControls。)

    Page 对象在 Page 对象上调用 PreRender 事件,然后以递归方式对每个子控件执行相同操作。各个控件的 PreRender 事件在页的 PreRender 事件之后发生。

    在呈现阶段开始之前,使用该事件对页或其控件的内容进行最后更改。

    PreRenderComplete

    在设置了 DataSourceID 属性的每个数据绑定控件调用其 DataBind 方法之后引发。有关更多信息,请参见本主题后面的数据绑定控件的数据绑定事件

    SaveStateComplete

    在为页和所有控件保存视图状态和控件状态之后发生。此时对页或控件进行的任何更改都会影响呈现,但是在下一个回发中将不会检索到这些更改。

    Render

    这不是事件;在处理的这个阶段,Page 对象会在每个控件上调用此方法。所有 ASP.NET Web 服务器控件都有一个用于写出发送给浏览器的控件标记的 Render 方法。

    如果创建自定义控件,通常要覆盖此方法以输出控件的标记。不过,如果自定义控件只合并标准的 ASP.NET Web 服务器控件,不合并自定义标记,则不需要覆盖 Render 方法。有关更多信息,请参见开发自定义 ASP.NET 服务器控件

    用户控件(.ascx 文件)自动合并呈现,因此不需要在代码中显式呈现该控件。

    Unload

    首先针对每个控件引发,继而针对该页引发。

    在控件中,使用该事件对特定控件执行最后清理,如关闭控件特定数据库连接。

    对于页自身,使用该事件来执行最后清理工作,如:关闭打开的文件和数据库连接,或完成日志记录或其他请求特定任务。

    说明说明
    在卸载阶段,页及其控件已被呈现,因此无法对响应流做进一步更改。如果尝试调用方法(如 Response.Write 方法),则该页将引发异常。
    其他的页生命周期注意事项

    各个 ASP.NET 服务器控件都有自己的生命周期,该生命周期与页生命周期类似。例如,控件的 InitLoad 事件在相应的页事件期间发生。

    虽然 InitLoad 都在每个控件上以递归方式发生,但它们的发生顺序相反。每个子控件的 Init 事件(还有 Unload 事件)在为其容器引发相应的事件之前发生(由下到上)。但是,容器的 Load 事件是在其子控件的 Load 事件之前发生(由上到下)。

    当您创建从 Page 类继承的类时,除了可以处理由页引发的事件以外,还可以重写页的基类中的方法。例如,可以覆盖页的 InitializeCulture 方法,以便动态设置区域性信息。注意,在使用 Page_事件 语法创建事件处理程序时,将隐式调用基实现,因此无需在方法中调用它。例如,无论是否创建 Page_Load 方法,始终都会调用页基类的 OnLoad 方法。但是,如果使用 override 关键字(在 Visual Basic 中为 Overrides)覆盖页的 OnLoad 方法,则必须显式调用基方法。例如,如果在页中覆盖 OnLoad 方法,则必须调用 base.Load(在 Visual Basic 中为 MyBase.Load)以运行基实现。

    下图显示了 Page 类的一些最重要方法,您可以对其进行重写以便添加在页生命周期的特定点执行的代码。(有关页方法和事件的完整列表,请参见 Page 类。)该图还演示这些方法如何与页事件和控件事件相关。在该图中方法和事件的顺序为从上到下排列,在每行中为从左到右。

    ASP.NET 页面生命周期关系图
    添加的控件的追赶事件

    如果控件是在运行时动态创建的,或者是以声明方式在数据绑定控件的模板中创建的,它们的事件最初与页上的其他控件的事件并不同步。例如,对于运行时添加的控件,InitLoad 事件在页生命周期中的发生时间可能要比以声明方式创建的控件的相同事件晚得多。因此,从实例化那一刻起,动态添加的控件的事件就一直是在模板中的控件的事件之后发生,直到赶上该控件加入 Controls 集合时所对应事件为止。

    数据绑定控件的数据绑定事件

    为了帮助您理解页生命周期与数据绑定事件之间的关系,下表列出了数据绑定控件(如 GridViewDetailsViewFormView 控件)中与数据相关的事件。

    控件事件

    典型使用

    DataBinding

    在控件的 PreRender 事件(该事件在页的 PreRender 事件之���发生)之后引发。(这将应用于以声明方式设置其属性的 DataSourceID 控件。否则,该事件在您调用控件的 DataBind 方法时发生。)

    该事件标记将控件绑定到数据的进程的开始。使用此事件可以手动打开数据库连接,如果需要,还可以在运行查询之前动态设置参数值。

    RowCreated(仅限 GridView)或 ItemCreatedDataListDetailsViewSiteMapPathDataGridFormViewRepeaterListView 控件)

    在控件的 DataBinding 事件之后引发。

    使用该事件来操作不依赖于数据绑定的内容。例如,在运行时,可以以编程方式向 GridView 控件中的页眉或页脚行添加格式。

    RowDataBound(仅限 GridView)或 ItemDataBoundDataListSiteMapPathDataGridRepeaterListView 控件)

    在控件的 RowCreatedItemCreated 事件之后引发。

    当此事件发生时,行或项中的数据可用,因此,可以在子数据源控件上格式化数据或设置 FilterExpression 属性,以便显示行或项中的相关数据。

    DataBound

    在数据绑定控件中的数据绑定操作结尾引发。GridView 控件中,会为所有行和子控件完成数据绑定。

    使用此事件格式化数据绑定内容,或在依赖来自当前控件的内容的值的其他控件中启动数据绑定。(有关更多信息,请参见本主题中前面的“添加的控件的追赶事件”。)

    嵌套的数据绑定控件

    如果子控件已执行数据绑定,但其容器控件尚未执行数据绑定,则子控件中的数据与其容器控件中的数据可能不同步。如果子控件中的数据根据容器控件中的数据绑定值执行了处理,这种情况则尤其显著。

    例如,假定有一个 GridView 控件,它的每一行显示一条公司记录,此外,还有一个 ListBox 控件包含公司管理者列表。若要填充管理者列表,则需要将 ListBox 控件绑定到一个数据源控件(如 SqlDataSource),后者在查询中使用公司 ID 来检索公司管理者数据。

    如果以声明方式设置了 ListBox 控件的数据绑定属性(如 DataSourceIDDataMember),ListBox 控件将尝试在包含行的 DataBinding 事件期间绑定到其数据源。不过,行的 CompanyID 字段直到 GridView 控件的 RowDataBound 事件发生后才包含值。这种情况下,先绑定子控件(ListBox 控件),后绑定包含控件(GridView 控件),因此它们的数据绑定阶段并不同步。

    若要避免此种情况,需要将 ListBox 控件的数据源控件与 ListBox 控件自身放在同一模板项中,并且不要以声明方式设置 ListBox 的数据绑定属性。而应在 RowDataBound 事件期间在运行时以编程方式设置它们,这样,到 CompanyID 信息可用时 ListBox 控件才会绑定到其数据。

    有关更多信息,请参见使用数据源控件绑定到数据

    登录控件事件

    Login 控件可以使用 Web.config 文件中的设置来自动管理成员资格验证。不过,如果应用程序要求您自定义控件的工作方式,或者您要了解 Login 控件事件与页生命周期的关联方式,可以使用下表中列出的事件。

    控件事件

    典型使用

    LoggingIn

    在回发期间,当页的 LoadComplete 事件发生后引发。此事件标记登录过程的起点。

    对必须在验证过程开始前发生的任务使用该事件。

    Authenticate

    LoggingIn 事件之后引发。

    使用该事件来覆盖或增强 Login 控件的默认验证行为。

    LoggedIn

    在验证用户名和密码后引发。

    使用该事件来重定向到另一个页或动态设置控件中的文本。如果出现错误或验证失败,就不会发生该事件。

    LoginError

    在身份验证失败的情况下引发。

    使用该事件来设置控件中的问题解释文本或将用户定向到不同的页。

    展开全文
  • 本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供... 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件I
  • ATL建立ActiveX控件()

    千次阅读 2009-07-02 21:44:00
    MFC所做出来的控件比较大,ATL相对小很较多,这时我们如果是在网页上使用,ATL的优势就会突显出来。 ATL编写控件比MFC要难一些,所谓的难就是ATL中的编程向导没有MFC中的那么好用。有好多的东东要自己手
  • 欠了的是建立控件树这个东风,因为HierarchyViewer根据ID去获取一个控件之前是需要先建立控件树,然后从该控件树上根据ID去查找到目标控件的。 那么这一小节我们就先去看下HierarchyViewer是如何去ViewS
  • C#控件事件属性大全

    千次阅读 2015-01-17 19:29:00
    C#控件及常用设计整 1、窗体... 1 2、Label 控件... 3 3、TextBox 控件... 4 4、RichTextBox控件... 5 5、NumericUpDown 控件... 7 6、Button 控件... 7 7、GroupBox 控件... 7 8、RadioButton控件... 8 ...
  • C# 常用控件及单击事件

    千次阅读 2015-03-13 23:38:34
    1、窗体  1、常用属性  (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。  (2)WindowState属性: 用来获取或设置窗体的...(3)StartPosition属性:用来获取或设置运行窗体
  • 动态添加的ActiveX控件如何响应事件

    千次阅读 2013-11-13 21:51:46
    今天在csdn上看到朋友问如何响应动态添加的控件事件,搜索资料,发现对于一般的应用来说,使用ON_EVENT_RANGE就足以满足需要了,不过,还是希望能够更灵活的实现动态的响应,所以又经过对MFC源码一番探查,发现...
  • C#动态生成控件以及添加事件处理

    万次阅读 2011-07-02 17:05:16
    C#动态生成控件以及添加事件处理 有时候需要在程序运行到一定时候或者某个事件之后需要动态生成控件 在C#下一般方式是: private Button Db=new Button() ; Db.Name="Dy_Button" //设定名称 Db.Location=new ...
  • 控件中一些常用的属性和事件

    千次阅读 2019-09-01 11:22:56
    1.1常用基本属性 1)Name:表示控件的名称。 2)Enabled:表示控件是否可以用户交互做出响应。 3)Font:表示控件中显示文字的字体格式,包括字体名称...7)Location:这是一个复合属性,表示控件的左上角相对于其...
  • ViewGroup控件作为父控件可以包含多个View控件,并管理其包含的View控件,通过ViewGroup,整个界面上的控件形成了一个树形结构,也就是我们常说的控件树么,上层控件负责下层子空间的测量与绘制,并传递交互事件,...
  • 今天在csdn上看到朋友问如何响应动态添加的控件事件,搜索资料,发现对于一般的应用来说,使用ON_EVENT_RANGE就足以满足需要了,不过,还是希望能够更灵活的实现动态的响应,所以又经过对MFC源码一番探查,发现...
  • 使用 IOS 的事件机制,可以实现与用户的交互。ios程序获取控件的2种方式: ...它是特殊的属性,可建立与界面设计文件中控件的关联。 简单示意图: 看图示到第4步,需要选中控件然后按住 control+鼠标左键,从可
  • 在MFC中动态创建控件以及事件响应

    千次阅读 2007-08-21 12:12:00
     放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示,其上的...
  • 最近在项目中自己建立一个控件控件类似一个Slider 但是在移动的时候或有相应的触发事件,中间出现了一个问题 当我在使用控件的MOVE事件中时候,如果在MOVE的过程中,如果移动的区域不在感应的区域内的话,松手...
  • 最近开始学ActiveX控件编程,上手不太容易,上网想找相关教程也没合适的,最后还是在师哥的指导下完成了第一个简单控件的开发,现在把开发过程贴出来与大家分享一下~ (环境说明——平台:vs2005;语言:VC++;基于...
  • C#控件及常用设计整理 1、窗体  1、常用属性  (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。  (2)WindowState属性:用来获取或设置窗体的窗口状态。  取值有三种: ...
  • C#几个控件介绍

    2017-07-10 17:38:15
    控件又称组合框,默认情况下,组合框分两个部分显示:顶部是一个允 许输入文本的文本框,下面的列表框则显示列表项。可以认为ComboBox就是文本框与列表框的组合,与 文本框和列表框的功能基本一致。与列表框相比,...
  • 最近开始学ActiveX控件编程,上手不太容易,上网想找相关教程也没合适的,最后还是在师哥的指导下完成了第一个简单控件的开发,现在把开发过程贴出来与大家分享一下~ (环境说明——平台:vs2005;语言:VC++;基于...
  • C#本身提供了很强大的控件库,但是很多控件库的功能只是一些基本的功能,就比如最简单的按钮,C#提供了最基础的按钮使用方法,但是如果要增加一些功能,比如按钮按下要一个图片,弹起要另一个图片这样的工作。...
  • C#跨线程修改控件——从MSIL和汇编看Invoke, 多线程, 事件事件委托 原创性声明 相信大家刚开始写winform的时候都遇到过这样的问题,当跨线程修改控件属性会遇到如下的异常: 线程间操作无效: 从不是创建控件...
  • 之前学习老A博客和《WCF全面解析》最常用到的是控制台寄宿,近期由于项目需求,需要在WinForm程序中调用WCF服务,本博文通过一个简单的实例来演示WCF在WinForm中的寄宿。并着重介绍如何利用事件绑定控制宿主主UI...
  • ATL建立ActiveX控件样例(入门级)

    万次阅读 2009-12-28 15:18:00
    MFC所做出来的控件比较大,ATL相对小很较多,这时我们如果是在网页上使用,ATL的优势就会突显出来。 ATL编写控件比MFC要难一些,所谓的难就是ATL中的编程向导没有MFC中的那么好用。有好多的东东要自己手工去加
  • 学习Qt有一段时间了,几天做东西需要将Qtableview中的数据显示在相应控件上,想看好久,终于搞定了,特意拿出来,和大家分享,也当做是自己的一个学习笔记。  首先我的Qtableview中的的内容是从数据库中查找出来...
  • Delphi控件-复合控件

    千次阅读 2008-10-28 13:48:00
    复合控件复合控件是Delphi控件中非常重要的一种控件,复合控件就是将两个或两个以上的控件重新组合成一个新...制作一个复合控件时,我们一般从TwinControl派生控件。我们这次做的控件是拥有一个Edit编辑框和一个Button

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,058
精华内容 19,223
关键字:

对一个控件建立相应的事件过程时