当前位置:文档之家› C#窗体控件简介

C#窗体控件简介

C#窗体控件简介
C#窗体控件简介

C#窗体控件简介

C#控件及常用设计整理

1、窗体

2、LABEL 控件

3、TEXTBOX 控件

4、RICHTEXTBOX 控件

5、NUMERICUPDOWN 控件

6、BUTTON 控件

7、GROUPBOX 控件

8、RADIOBUTTON 控件

9、CHECKBOX 控件

10、LISTBOX 控件

11、COMBOBOX 控件

12、CHECKEDLISTBOX 控件

13、PICTUREBOX 控件的使用

14、TIMER 控件

15、PROGRESSBAR 控件和 TRACKBAR 控件

16、HSCROLLBAR 控件和 VSCROLLBAR 控件的使用

17、OPENFILEDIALOG 控件

18、SAVEFILEDIALOG 控件

19、FONTDIALOG 控件

20、COLORDIALOG 控件

21、PRINTDIALOG 控件和 PRINTDOCUMENT 控件

22、用户自定义对话框

23、菜单控件

24、多窗体程序设计

25、MDI 应用程序设计

26、键盘事件处理

27、鼠标事件处理

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

(21)Font属性:用来获取或设置控件显示的文

1

本的字体。

(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 时,标签将透明显示,即背景色不再显示出来。

2

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

(4)Copy方法:将文本框中的当前选定内容复制到剪贴板上。调用的一般格式如下:

文本框对象.Copy()该方法无参数。

(5)Cut方法:将文本框中的当前选定内容移动到剪贴板上。调用的一般格式如下:

文本框对象.Cut()该方法无参数。

(6)Paste方法:用剪贴板的内容替换文本框中的当前选定内容。调用的一般格式如下:

3

文本框对象.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参数中指定了

4

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控件又称为分组框,它在工具箱中的图标是。该控件常用于为其他控件提供可

5

识别的分组,其典型的用法之一就是给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 时不支持多列。当使用多列模式时,可以使控件得以显示更

6

多可见项,如图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);

7

[功能]:从 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控件,它几乎能完成列表框可以完成的所有任务,并且还可以在列表项旁边显示复选标记。两种控件间的其他差异在于,复选列表框只支持DrawMode.Normal,并且复选列表框只能有一项选定或没有任何选定。此处需要注意一点:选定的项是指窗体上突出显示的项,已选中的项是指左边的复选框被选中的项。复选列表框的样式如图9-23所示。除具有列表框的全部属性外,它还具有以下属性。

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

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

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

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的事件,因此在该事件的代码中可以放置一些需要每隔一段时间重复执行的程序段。在程序运行时,定时器控件

8

是不可见的。

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属性- 15 - 值,则 Value属性值就是Minimum值。

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

该方法无参数。例如,下列程序段是一个显示复制多个文件的进度的进度条使用方法。privatevoidCopyWithProgress(string[]filenam es)

{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属性:用来获取或设置当滑块

9

短距离移动时对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属性:用来获取或设置文件对话框显示的初始目录,默认值为空字符串("")。

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

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

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

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

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

10

该属性值为 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#的帮助文件。

6.用户自定义对话框

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

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

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

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

22、用户自定义对话框

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

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

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

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

11

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。子窗口本身不能再成为父窗口,而且不能移动到它们的父窗口区域之外。除此以外,子窗口的行为与任何其他窗口一样(如可以关闭、最小化和调

12

整大小等)。一个子窗口在功能上可能与父窗口的其他子窗口不同,例如,一个子窗口可能用于编辑图像,另一个子窗口可能用于编辑文本,第 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属性。(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 键),

13

仅用于判断修改键信息。

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

14

C语言简介

1.C语言的历史 我们都知道最早的操作系统都是由汇编语言(低级语言)编写的。汇编语言过于依赖电脑硬件,因此程序的可读性和可移植性比较差。若想提高程序的可读性和可移植性,最好改用高级语言,可高级语言又不具备低级语言可直接访问硬件的特点,在这种情况下,一种兼有高、低语言特性的新语言----C语言诞生了。 C语言于1972~1973年间,由贝尔试验室的在B语言的基础上设计而出,在1978年发表,同时和(简称K&R)合着了着名的《The C Programming Language》,有人把这本书当做C 语言标准,可它并没有定义一个完整的标准。ANSI于1983年首次为C语言制定了标准,称为ANSI C。在1988年K&R根据ANSI C重新写了他们的着作。但在1987年ANSI更新并公布了新的C 语言标准,87 ANSI C。该标准并于1990年被ISO接受为ISO C。 2.C语言的特点 1)语言简捷、紧凑,使用方便、灵活。(C语言只有32个关键字) 2)运算符丰富。(C语言有34种运算符) 3)数据结构丰富。 4)具有结构化控制语句。 5)语法限制不严格,程序设计自由度大。 6)可以直接访问硬件进行操作。(如:位操作,指针等) 7)生成目标代码质量高,程序执行效率高。 8)程序可移植性好。(与汇编语方相比) 以上只是简单的介绍了一下C语言的特点,在以后的使用中会理解和发现C语言的更多特点。

3.简单的C程序介绍 例: 1)#include <> /*导入头文件*/ 2)#include <> 3)void main() /*主函数*/ 4){ /*函数体开始*/ 5)double x,s; /*声明变量*/ 6)printf("input number:\n"); /*输出语句*/ 7)scanf("%f",&x); /*输入变量x的值*/ 8)s=sin(x); /*调用库函数sin(),并给s赋值*/ 9)printf("sine of %f is %f\n",x,s); /*输出结果*/ 10)} /*函数体结束*/ 上面是一个简单的C程序,大体来看,这个程序包函三部分,分别是预处理部分(1~2)、函数头(3)和函数体(4~10)。 1)预处理部分 预处理命令一般写在程序的开始。 #include是预处理命令的一种,称为文件包含命令。在“<>”或“""”中指定要包含的文件,被包含的文件通常由系统提供,其扩展名为“.h”,被称为头文件或首部文件。 C语言的头文件中包含了各个标准库函数的函数原型。因此,在程序中调用某个库函数,必须包含该库函数原型所在的头文件。 2)函数头部分

C# WinForm自定义控件开发实例

C# WinForm自定义控件开发实例 最近做一个图象的采集,需要一个图形的选择控件,但是在.net下没有类似vb中的shape控件,所以考虑了自己写一个控件。下面我将从头创建控件,这个控件主要是用来选择图形的Rectangle,有一下几个属性Color BorderColor:边框颜色,Color BackColor:背景颜色,bool ReSizeble:是否可移动,Rectangle SelectRectangle:选择区域。 打开vs2003(我用的这个版本),新建一个c#控件库,ok,拷贝如下代码到你的代码里。using System;using System.Collections;using https://www.doczj.com/doc/f07998538.html,ponentModel;using System.Drawing;using System.Data;using System.Windows.Forms;namespace WindowsExtendedControls{ /// /// 控件/// public class ShapeEx : System.Windows.Forms.Control { /// /// 必需的设计器变量。/// /// private Color _BorderColor=new Color(); private Color _BackColor=new Color(); private bool _ReSizeble; private Point _SelfLocation=new Point(); private Point _MouseLocation=new Point(); private int _SelfWidth; private int _SelfHeight; private int _SelectSelctedIndex;//0-8,0:SizeAll private Rectangle

计算机程序设计专业语言介绍——C语言

计算机程序设计语言介绍——C语言 人工智能系陆汉奇 一、简介 C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。 冯.诺依曼在1945年提出了现代计算机的若干思想,被后人称为冯.诺依曼思想,这是计算机发展史上的里程碑。C 语言是一种十分强大的语言,可以进行多种方式进行程序的设计,它是一种很有特色的高级语言通过若干个函数组成,它具备构成程序设计的 3 种基本结构顺序,选择和循环结构。C语言编辑简洁明了,运算符丰富且功能强大还有编译预处理功能。此语言的移植性好不同的处理器用不同的编译器编译指令达到移植的效果。 二、特点 C 语言普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,因此相对于其它编程语言,它具有自己独特的特点。具体体现在以下三个方面: 其一,广泛性。C 语言的运算范围的大小直接决定了其优劣性。C 语言中包含了 34 种运算符,因此运算范围要超出许多其它语言,此外其运算结果的表达形式也十分丰富。此外,C 语言包含了字符型、指针型等多种数据结构形式,因此,更为庞大的数据结构运算它也可以应付。 其二,简洁性。9 类控制语句和 32个KEYWORDS是C语言所具有的基础特性,

使得其在计算机应用程序编写中具有广泛的适用性,不仅可以使用广大编程人员的操作,提高其工作效率,同时还能够支持高级编程,避免了语言切换的繁琐。 其三,结构完善。C 语言是一种结构化语言,它可以通过组建模块单位的形式实现模块化的应用程序,在系统描述方面具有显著优势,同时这一特性也使得它能够适应多种不同的编程要求,且执行效率高。 三、C语言的结构化设计 1、自顶向下逐步细化 通过自顶向下逐步细化可以使C语言代码的出错率降低,更能提高C语言程序的执行效率,它能使一个具体的问题抽象化再加以注释方便人们的理解。 2、模块化设计 它把一个复杂的问题进行了模块化,使每个模块的功能更简洁,更单一,模块在语言中可通过函数实现。 3、结构化编码 设计好结构化算法之后,还要进行结构化编码,将其用设计好的算法用具体的程序设计语言来表示,得到结构化程序。 四、西安铁道技师学院计算机程序设计专业机房 为实现我院人工智能系计算机程序设计专业理论与实践相结合的教学模式,学院投入巨资修建了大量的专业计算机实训机房,其中实训楼四层有着按照国家标准配备,达到了专业计算机设备水准和相应的远程教学系统。专业实训机房总共有130台专业计算机设备,以保证计算机软件设计专业的同学都能有实际练习编写C语言的机会。

C#编程Winform窗体结业考试笔试题目

课程“Accp6.0_S1.使用C#语言开发数据库应用系统”题库试题汇编 【001】DataSet是https://www.doczj.com/doc/f07998538.html,中用于存储从数据库检索到的数据的对象,下列关于DataSet的说法错误的是()。 (选择一项) A) 在DataSet中可以包含多个DataTable B) DataSet可以简单的理解为一个临时数据库 C) 在与数据库断开连接后,DataSet中的数据会消失 D) DataSet实际上是从数据源中检索到的数据在内存中的缓存 【002】使用https://www.doczj.com/doc/f07998538.html,访问数据库,某程序员编写如下几行代码,你觉得错误的应该是第()行。OleDbCommand oleCmd = new OleDbCommand();//1 OleDbConnection oleCon = new OleDbConnection("Server=SQLDB;DataBase=pubs;uid=sa;pwd=pwd"); oleCmd.Connection=oleCon;//2 oleCmd.Connection.Open(); https://www.doczj.com/doc/f07998538.html,mandText="select * from authors"; https://www.doczj.com/doc/f07998538.html,mandType=CommandType.StoredProcedure;//3 oleCmd.ExecuteScalar();//4 oleCmd.Connection.Close(); (选择一项) A) 1 B) 2 C) 3 D) 4 【003】https://www.doczj.com/doc/f07998538.html,中的Command对象允许向数据库传递请求,以便检索和操作数据库中的对象,下列()方法不是Command对象的方法。 (选择一项) A) ExecuteNonQuery() B) Execute() C) ExecuteReader() D) ExecuteScalar() 【004】https://www.doczj.com/doc/f07998538.html,中,DataReder对象用于从数据中检索只读数据,假设存在一个Command对象command,则使用以下()语句可以创建一个DataReader对象. (选择一项) A) SqlDataReader dtReader=command.ExecuteReader(); B) SqlDataReader dtReader=new SqlDataReader(command.ExectueReade); C) SqlDataReader dtReader=ExectueReader(); D) SqlDataReader dtReader=new SqlDataeader(); 【005】在https://www.doczj.com/doc/f07998538.html,中,DataSet对象相当于一个临时的()(选一项) (选择一项) A) 数据表 B) 存储过程 C) 数据库

使用窗体控件

第2章使用窗体控件 课堂练习:为控件创建事件处理程序 5)传递给这个事件处理程序的第二个参数(e)的目的是什么? 答:参数e包含事件数据。它是一个EventArgs 对象(实际不包含事件数据的基类),或者是一个派生类(像MouseEventArgs)的实例。要查看派生类的完整列表,请在Visual Studio .NET帮助文档中使用短语“EventArgs 类”进行查找,然后点击链接转到“派生类”。 ●为Click 事件创建一个事件处理程序。 3)上面的双击动作为什么创建了一个Click 事件处理程序? 答:当在设计视图中双击一个控件时,IDE会自动为默认事件创建一个事件处理程序。课堂练习:创建和使用ToolBar控件 8)为什么不能向ToolBar 按钮添加图像呢? 答:ToolBar 控件将ImageList 控件作为图像源。使用ToolBar 控件的ImageList 属性指定Toolbar 将从哪个ImageList 控件获取图像。 13)运行应用程序。单击工具栏按钮时有事情发生吗?必须处理什么事件以响应单击ToolBar按钮? 答:ToolBar 的ButtonClick事件用来处理ToolBar按钮的单击。ToolBarButtonClickEventArgs 用来确定单击了哪个按钮。 课堂练习:在运行时添加和移除控件 ●添加新控件 6)为什么decimalCheckBox 出现在GroupBox1控件的左上角? 答:控件位置属性的默认坐标X和Y的值均为零。 课堂练习:在运行时更新菜单 ●使用另一个MainMenu 9)什么时候能在一个应用程序中使用多个MainMenu 控件? 答:在应用程序的上下文改变或者应用程序有多种状态时,使用(显示)多个MainMenu 对象会很有帮助。 ●将一个ContextMenu 分配给一个控件。 5)如何找出哪个控件与ContextMenu 有关联? 答:ContextMenu.SourceControl 属性获取显示快捷方式菜单的控件。 ●找出与ContextMenu关联的控件

常用窗体控件

常用窗体控件: String str=””; Foreach(Control item in this.Controls) { If(https://www.doczj.com/doc/f07998538.html,.IndexOf(“checkBox”)>0) { CheckBox ck=(CheckBox)Item; If(ck.Checked) { Str=ck.Text+”,”; } } }

高级窗体控件: 1.菜单控件MenuStrip 使用步骤: ①在Windows窗体中添加一个MenuStrip控件 ②单击该控件的Items属性,弹出“项集合编辑器”对话框 ③可以添加MenuItem子项。子项的子菜单 选择其“MenuItem”选项,单击其 DropDownItems属性,弹出相接对话框 ①选中要添加右键功能的Form或者控件,打开控件的设计页面 ②从工具箱中找到ContextMenuStrip控件,将这个控件拖曳到Form或者控件的设计页 面上。这时系统就会在这个页面下面自动创建一个contextMenuStrip1控件,如果你想在这个页面添加多个菜单,那么你也可以拖曳多个这种控件到设计页面上。 ③按照你的要求将这些ContextMenuStrip控件改成你需要的名称。然后, 选择需要右 键弹出菜单的页面,比如你当前编辑的页面中有一个DataGrid,一个T reeList,而你想分别为这两个控件添加不同的右键菜单。那么你就可以先选择DataGrid控件,然后在这个控件的属性中找到ContextMenuStrip属性,点击该属性,系统会自动查找你拖曳到当前页面的所有ContextMenuStrip控件并将这些控件罗列在这个属性的下拉菜单中。你可以选择一个你预先定义好的ContextMenuStrip控件。这样就为这个DataGrid控件设置了右键菜单。其他控件也使用同样的方法添加。 ④定义你的菜单,在为控件分配完菜单之后,你就可以定义单个的菜单。这时你可以 选中一个ContextMenu控件。系统会自动在编辑页面的上面现一个可编辑的动态菜

Excel中的窗体控件和ActiveX控件

Excel中的窗体控件和ActiveX控件 2009年1月21日 评论发表评论 Excel中有两种不同的控件。一种是窗体工具条控件(Forms toolbar controls),通过点击菜单“视图”->“工具栏”,在弹出菜单上选择“窗体”,将出现“窗体”工具条控件窗口。另外一种是ActiveX控件,通过点击菜单“视图”->“工具栏”,在弹出菜单上选择“控件工具箱”(也可以选择“Visual Basic”,然后再在工具栏上选择“控件工具箱”),将出现“控件工具箱”窗口。 窗口工具条控件是Excel5和Excel95留下来的东西(在Excel 97后的版本中,添加一个Dialog Sheet后,将可以看到这个窗体工具条窗口),从Excel 97开始,Dialog Sheet被UserForm代替,并且开始使用ActiveX控件。 从某些角度来讲,窗体控件甚至比ActiveX控件更有优势。 1. 如果你需要在Chart工作表中添加控件,只能使用窗体工具条控件。 2. 更加方便使用VBA代码创建窗体控件以及定义事件过程。 3. 窗体控件的事件过程可以放在标准模块,可以使用任何有效的VBA过程名称,可以 在控件创建之前就创建事件过程。 4. 可以给多个控件赋于一个相同的过程。 5. 可以使用Application.Caller来获取窗体控件的名称。 窗体控件比ActiveX控件简单,基本上只有一个Click事件。而ActiveX控件可以响应丰富的事件,ActiveX控件的事件只能放在控件所在的类模块(工作表模块)或窗体模块。过程名称由控件名和事件名称组成。如果你在控件不存在的时候就创建这个控件的事件过程,然后再在代码中引用这个控件,将会出现编译错误,所以必须使用代码创建事件过程。

C# WinForm窗体及其控件的自适应

C# WinForm窗体及其控件的自适应 C# WinForm窗体及其控件自适应各种屏幕分辨率 一。说明 我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观。实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可。因为窗体上控件的位置和大小是相对于自己所在的窗体的,也就是所谓的窗口坐标。 在这里我们只考虑相对于自己窗体的窗口坐标更简单,也就是成比例变化。为了多个窗体共用,我在这里创建一个类AutoSizeFormClass ,1.使用它去记录窗体和其控件的初始位置和大小,2.根据窗体变化了的大小,成比例地实现其控件的水平和垂直方向的变化,也就是自适应。 二。使用方法 使用方法很简单, 1.把自适应的类整体复制到你的工程命名空间里, 然后在需要自适应的窗体中做3步即可: 2.声明自适应类实例。 3.为窗体添加Load事件,并在其方法Form1_Load中,调用类的初始化方法,记录窗体和其控件初始位置和大小 4.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,调用类的自适应方法,完成自适应 三。完整代码如下: (一)。自适应窗体的代码: using System; using System.Collections.Generic;

using https://www.doczj.com/doc/f07998538.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { //1.声明自适应类实例 AutoSizeFormClass asc = new AutoSizeFormClass(); public Form1() { InitializeComponent(); } //2. 为窗体添加Load事件,并在其方法Form1_Load中,调用类的初始化方法,记录窗体和其控件的初始位置和大小 private void Form1_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); } //3.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,调用类的自适应方法,完成自适应 private void Form1_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } } }

C语言中isascii()函数介绍

C语言中isascii()函数介绍 C语言中isascii()函数的功能是判断字符是否为ASCII码字符。 头文件:#include 定义函数:int isascii(int c); 函数说明:检查参数c是否为ASCII 码字符,也就是判断c 的范围是否在0 到127 之间。返回值:若参数c 为ASCII 码字符,则返回true,否则返回NULL(0)。 附加说明:此为宏定义,非真正函数。 举例:判断int i 是否具有对应的ASCII #include main(){ int i; for(i = 125; i < 130; i++) if(isascii(i)) printf("%d is an ascii character:%c\n", i, i); else printf("%d is not an ascii character\n", i); } #include main(){ int i; for(i = 125; i < 130; i++) if(isascii(i)) printf("%d is an ascii character:%c\n", i, i); else printf("%d is not an ascii character\n", i); } 执行结果: 125 is an ascii character:}

126 is an ascii character:~ 127 is an ascii character: 128 is not an ascii character 129 is not an ascii character

winform窗体和控件自适应

有时winform窗体的大小会改变,此时窗体上的控件会很混乱,如何可以使控件自适应窗体呢?以 下就是方法: 1、首先在自己的命名空间里先建一个Autosize.cs类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace 自己的命名空间 { class Autosize { public void setTag(Control cons) { foreach (Control con in cons.Controls) { con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size; if (con.Controls.Count > 0) setTag(con); } } string[] mytag; public void setControls(float newx, float newy, Control cons) { foreach (Control con in cons.Controls) { if (con.Tag != null) { mytag = con.Tag.ToString().Split(new char[] { ':' }); float a = Convert.ToSingle(mytag[0]) * newx; con.Width = (int)a; a = Convert.ToSingle(mytag[1]) * newy; con.Height = (int)(a); a = Convert.ToSingle(mytag[2]) * newx; con.Left = (int)(a); a = Convert.ToSingle(mytag[3]) * newy; con.Top = (int)(a); Single currentSize = Convert.ToSingle(mytag[4]) * Math.Min(newx, newy); }

C语言相关知识介绍

第1章绪论 一、基础知识题 1.简述下列概念 数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,算法。 【解答】数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据元素是数据的基本单位。在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。 数据类型是对数据的取值范围、数据元素之间的结构以及允许施加操作的一种总体描述。每一种计算机程序设计语言都定义有自己的数据类型。 “数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。 数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则依赖于存储结构。 数据结构在计算机中的表示称为物理结构,又称存储结构。是逻辑结构在存储器中的映像,包括数据元素的表示和关系的表示。逻辑结构与计算机无关。 算法是对特定问题求解步骤的一种描述,是指令的有限序列。其中每一条指令表示一个或多个操作。一个算法应该具有下列特性:有穷性、确定性、可行性、输入和输出。

2.数据的逻辑结构分哪几种,为什么说逻辑结构是数据组织的主要方面? 【解答】数据的逻辑结构分为线性结构和非线性结构。(也可以分为集合、线性结构、树形结构和图形即网状结构)。 逻辑结构是数据组织的某种“本质性”的东西: (1)逻辑结构与数据元素本身的形式、内容无关。 (2)逻辑结构与数据元素的相对位置无关。 (3)逻辑结构与所含数据元素的个数无关。 3.试举一个数据结构的例子,叙述其逻辑结构、存储结构、运算三方 面的内容。 【解答】学生成绩表,逻辑结构是线性结构,可以顺序存储(也可以链式存 储),运算可以有插入、删除、查询、等等。 4.简述算法的五个特性,对算法设计的要求。 【解答】算法的五个特性是:有穷性、确定性、可行性、零至多个输入和 一至多个输出。 对算法设计的要求:正确性,易读性,健壮性,和高的时空间效率(运算 速度快,存储空间小)。 5.设n是正整数,求下列程序段中带@记号的语句的执行次数。 (1)i=1;k=0; (2) i=1;j=0; while(i<n) while(i+j<=n) {k=k+50*i; i++; @ {if(i>j)j++; @ } else i++; } @ (3)x=y=0; (4)x=91;y=100; for(i=0;i0) for(j=0;j<n;i++) @ if (x>100) {x++; @ {x=x-10; y--; @ for(k=0;i

Excel中的窗体控件功能非常强大.

Excel中的窗体控件功能非常强大,但有关它们的资料却很少见,甚至Excel帮助文件也是语焉不详。本文通过一个实例说明怎样用窗体控件快速构造出动态图表。 假设有一家公司要统计两种产品(产品X,产品Y)的销售情况,这两种产品的销售区域相同,不同的只是它们的销售量。按照常规的思路,我们可以为两种产品分别设计一个图表,但 更专业的办法是只用一个图表,由用户选择要显示哪一批数据——即,通过单元按钮来选择图表要显示的数据。 为便于说明,我们需要一些示例数据。首先在A列输入地理区域,如图一,在B2和C2分别输入“产品X”和“产品Y”,在B3:C8区域输入销售数据。 一、提取数据 接下来的步骤是把某种产品的数据提取到工作表的另一个区域,以便创建图表。由于图表 是基于提取出来的数据创建,而不是基于原始数据创建,我们将能够方便地切换提取哪一种产 品的数据,也就是切换用来绘制图表的数据。 在A14单元输入=A3,把它复制到A15:A19。我们将用A11单元的值来控制要提取的是哪一种产品的数据(也就是控制图表要描述的是哪一批数据)。现在,在A11单元输入1。在B13单元输入公式=OFFSET(A2,0,$A$11),再把它复制到B14:B19。 OFFSET函数的作用是提取数据,它以指定的单元为参照,偏移指定的行、列数,返回新 的单元引用。例如在本例中,参照单元是A2(OFFSET的第一个参数),第二个参数0表示行偏移量,即OFFSET返回的将是与参照单元同一行的值,第三个参数($A$11)表示列偏移量,在

本例中OFFSET函数将检查A11单元的值(现在是1)并将它作为偏移量。因此, OFFSET(A2,0,$A$11)函数的意义就是:找到同一行且从A2(B2)偏移一列的单元,返回该单元 的值。 现在以A13:B19的数据为基础创建一个标准的柱形图:先选中A13:B19区域,选择菜单“插入”→“图表”,接受默认的图表类型“柱形图”,点击“完成”。检查一下:A13:B19和图表是否确实显示了产品X的数据;如果没有,检查你是否严格按照前面的操作步骤执行。把A11单元的内容改成2,检查A13:B19和图表都显示出了产品B的数据。 二、加入选项按钮 不要第一步是加入选项按钮来控制A11单元的值。选择菜单“视图”→“工具栏”→“窗体”(,点击工具栏上的“选项按钮”,再点击图表上方的空白位置。重复这个过 选择“控件工具箱”) 程,把第二个选项按钮也放入图表。 右击第一个选项按钮,选择“设置控件格式”,然后选择“控制”,把“单元格链接”设置为 A11单元,选中“已选择”,点击“确定”,如图二。 把第一个选项按钮的文字标签改成“产品X”,把第二个选项按钮的文字标签改成“产品Y”(设置第一个选项按钮的“控制”属性时,第二个选项按钮的属性也被自动设置)。点击第一个选项按钮(产品X)把A11单元的值设置为1,点击第二个选项按钮把A11单元的值设置为2。 点击一下图表上按钮之外的区域,然后依次点击两个选项按钮,看看图表内容是否根据当

C语言基本数据类型简介

C语言基本数据类型简介 1.概述 C 语言包含的数据类型如下图所示: 2.各种数据类型介绍 2.1整型 整形包括短整型、整形和长整形。 2.1.1短整形 short a=1; 2.1.2整形 一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数,取值围是 -2147483648~2147483647,在存中的存储顺序是地位在前、高位在后,例如0x12345678在存中的存储如下: 地址:0x0012ff780x0012ff790x0012ff7a0x0012ff7b 数据:78563412 定义:用int关键字,举例如下: int a=6; 2.1.3长整形 long a=10; 2.2浮点型 浮点型包括单精度型和双精度型。 2.2.1单精度型 浮点型,又称实型,也称单精度。一般占4个字节(32位), float a=4.5; 地址:0x0012ff780x0012ff790x0012ff7a0x0012ff7b 数据:00009040 2.2.2双精度型 一般占8个字节(64位) double a=4.5;

地址:0x0012ff780x0012ff790x0012ff7a0x0012ff7b0x0012ff7c 0x0012ff7d0x0012ff7e0x0012ff7f 数据:0000000000 001240 2.3字符类型 在各种不同系统中,字符类型都占一个字节(8位)。定义如下: char c='a'; 也可以用字符对应的ASCII码赋值,如下: char c=97; 3.数据类型与“模子” short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。 怎么去理解它们呢? 举个例子:见过藕煤球的那个东西吧?(没见过?煤球总见过吧)。那个东西叫藕煤器,拿着它在和好的煤堆里这么一咔,一个煤球出来了。半径12cm,12 个孔。不同型号的藕煤器咔出来的煤球大小不一样,孔数也不一样。这个藕煤器其实就是个模子。 现在我们联想一下,short、int、long、char、float、double 这六个东东是不是很像不同类型的藕煤器啊?拿着它们在存上咔咔咔,不同大小的存就分配好了,当然别忘了给它们取个好听的名字。 在32 位的系统上 short 短整型的存2 byte; int 整型的存4 byte; long 长整型的存4 byte; float 单精度浮点型的存4byte;仅能接收7位有效数字 double 双精度浮点型的存8 byte;可以接收16位有效数字 char字符型的存1 byte。 fabs单精度浮点型存4byte. (注意这里指一般情况,可能不同的平台还会有所不同,具体平台可以用sizeof 关键字测试一下) 很简单吧?咔咔咔很爽吧?是很简单,也确实很爽,但问题就是你咔出来这么多存块,你总不能

WinForm界面布局

WinForm界面布局 Dock&Anchor Dock和Anchor是水火不容的,同时给控件设置Dock和Anchor属性时后设置的会覆盖前面的设置。 Dock 我初接触WinForm的时候发现控件的Width和Height只能是int,不能设置为百分比,那个时候就想子控件如何跟着父控件而变化呢?父控件变大就变大,而且还填满那个区域。甚至以为这个需要通过代码来解决,如是在SizeChanged事件里…… 后来才发现我要的就是Dock给的,Dock是停靠的意思。Dock属性的类型是DockStyle枚举: 1:public enum DockStyle 2:{ 3:None=0, 4:Top=1, 5:Bottom=2, 6:Left=3, 7:Right=4, 8:Fill=5 9:} 默认是None,当为Left的时,就表示子控件停靠在父控件的左边区域,并把左区域填充满: 上图中的Panel总是会停靠在Form的左边区域,不管如何调整Form的高度,它总是能把左边区域填满。Dock麻烦的地方在于多个控件碰到一起时,比如有两个Panel都设置为Left 该怎么办?我们会发现向父控件的Controls集合中添加子控件,越晚添加具有更高的“优先级”(不知道有没有这个说法,这是我杜撰的)。这里的优先级指的是,子控件“优先级”越高,

越靠近父控件边缘,其他子控件就得避让: [我的见解;通过选中控件,一般是pannel,右键选择置为底层,来决定控件间的优先级] this.Controls.Add(this.panel1); this.Controls.Add(this.panel2); Panel2后添加进去,所以它具有更高的优先级,更靠近Form的边缘。这个规则不仅仅对于Dock都设为Left的有效,对Dock属性不同,但是碰到一起的子控件也适用: 1:this.panel1.Dock=DockStyle.Left; 2:this.panel2.Dock=DockStyle.Left; 3:this.panel3.Dock=DockStyle.Top; 4: 5:this.Controls.Add(this.panel1); 6:this.Controls.Add(this.panel2); 7:this.Controls.Add(this.panel3); panel3的Dock设置为Top,最后添加到Controls集合中,所以具有最高的优先级,其他两个panel都得避让:

Winform常用控件

1.数据显示:DataGridView(DataGridView 控件提供用来显示数据的可自定义表。使用 DataGridView 类,可以自定义单元格、行、列和边框)。 文本编辑:TextBox(显示设计时输入的文本,它可由用户在运行时编辑或以编程方式更改)。 RichTextBox(使文本能够以纯文本或 RTF 格式显示)。MaskedTextBox(约束用户输入的格式)。 2.信息显示:Label(显示用户无法直接编辑的文本)。LinkLabel(将文本显示为 Web 样式的链接,并在用户单击该特殊文本时触发事件。该文本通常是到另一个窗口或网站的链接)。 StatusStrip(通常在父窗体的底部使用有框架的区域显示有关应用程序的当前状态的信息)。ProgressBar(向用户显示操作的当前进度)。 3.从列表中选择:CheckedListBox(显示一个可滚动的项列表,每项旁边都有一个复选框)。 ComboBox(显示一个下拉式项列表)。DomainUpDown(显示用户可用向上和向下按钮滚动的文本项列表)。ListBox(显示一个文本项和图形项(图标)列表)。ListView(在四个不同视图之一中显示项。这些视图包括纯文本视图、带有小图标的文本视图、带有大图标的文本视图和详细信息视图)。NumericUpDown(显示用户可用向上和向下按钮滚动的数字列表)。TreeView (显示一个节点对象的分层集合,这些节点对象由带有可选复选框或图标的文本组成)。 4.图形显示:PictureBox(在一个框架中显示图形文件(如位图和图标)。 5.图形存储:ImageList(充当图像储存库。ImageList 控件和及其包含的图像可以在不同的应用程序中重用)。 6.值的设置:CheckBox(显示一个复选框和一个文本标签。通常用来设置选项)。CheckedListBox(显示一个可滚动的项列表,每项旁边都有一个复选框)。RadioButton(显示一个可打开或关闭的按钮)。TrackBar(允许用户通过沿标尺移动“滚动块”来设置标尺上的值)。 7.数据的设置:DateTimePicker(显示一个图形日历以允许用户选择日期或时间)。MonthCalendar(显示一个图形日历以允许用户选择日期范围)。 8.对话框:ColorDialog(显示允许用户设置界面元素的颜色的颜色选择器对话框) ColorDialog 显示允许用户设置界面元素的颜色的颜色选择器对话框。 FontDialog 显示允许用户设置字体及其属性的对话框。 OpenFileDialog 显示允许用户定位文件和选择文件的对话框。 PrintDialog 显示允许用户选择打印机并设置其属性的对话框。 PrintPreviewDialog 显示一个对话框,该对话框显示 PrintDocument 组件在打印出来后的外观。 FolderBrowserDialog 显示用来浏览、创建以及最终选择文件夹的对话框SaveFileDialog 显示允许用户保存文件的对话框。 9.菜单控件: MenuStrip 创建自定义菜单 ContextMenuStrip Bitmap 创建自定义上下文菜单。 10.命令: Button Bitmap 启动、停止或中断进程。 LinkLabel 将文本显示为 Web 样式的链接,并在用户单击该特殊文本时触发事件。该文本通常是到另一个窗口或网站的链接。 NotifyIcon 在表示正在后台运行的应用程序的任务栏的状态通知区域中显示一个图标。

C语言编程环境简介

C语言编程环境简介 第1部分计算机程序设计实验的一般步骤 1.1 计算机程序设计实验的目的 C语言程序设计是一门实践性很强的课程,该课程的学习有其自身的特点,学习者必须通过大量的编程训练,在实践中掌握程序设计语言,培养程序设计的基本能力,并逐步理解和掌握程序设计的思想和方法。具体的说,通过上机实践,应该达到以下几点要求: 1.使学习者能很好地掌握一种程序设计开发环境的基本操作方法(例如(Visual C++6.0),掌握应用程序开发的一般步骤。 2.在程序设计和调试程序的过程中,可以帮助学习者进一步理解教材中各章节的主要知识点,特别是一些语法规则的理解和运用,程序设计中的常用算法和构造及应用,也就是所谓“在编程中学习编程”。 3.通过上机实践,提高程序分析、程序设计和程序调试的能力。程序调试是一个程序员最基本的技能,不会调试程序的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。通过不断的积累经验,摸索各种比较常用的技巧,可以提高编程的效率和程序代码的质量。 下面介绍计算机程序设计实验的一般步骤: 1.2 计算机程序设计实验的准备 上机前需要做好如下准备工作,以提高上机编程的效率。 (1)在计算机上安装一种程序设计开发工具,并学会基本的操作方法。 (2)复习与本次实验相关的教学内容和主要知识点。 (3)准备好编程题程序流程图和全部源程序代码,并且先进行人工检查。 (4)对程序中有疑问的地方做出标记,充分估计程序运行中可能出现的问题,以便在程序调试过程中给予关注。 (5)准备好运行和调试程序所需的数据。 1.3 计算机程序设计实验的步骤 (1)运行程序设计开发工具,进入程序设计开发环境。 (2)新建一个文件,输入准备好的程序。 (3)不要立即进行编译和连接,应该首先仔细检查刚刚输入的程序,如有错误及时改正,保存文件后再进行编译和连接。 (4)如果在编译和连接的过程中发现错误,根据系统的提示找出出错语句的位置和原因,改正后再进行编译和连接。直到成功为止。 (5)运行程序,如果运行结果不正确,修改程序中的内容,直到结果正确为止。 (6)保存源程序和相关资源。 (7)实验后,应提交实验报告,主要内容应包括程序清单,调试数据和运行结果,还应该包括对运行结果的分析和评价等内容。

VB6.0基本控件的属性

VB基本控件的属性,方法经及事件 VB基本控件的属性,方法经及事件 VB基本控件的属性,方法经及事件 所有控件都具有的属性: 1、Name: 表示在代码中用来标识一个控件的名字。 2、Enabled: 表示一个控件是否可以响应一个事件,即该控件可不可用。 值为true: 可以响应;值为false: 不可以看见。 3、Visible: 表示一个控件是否可见。值为true:可以看见;值为false: 不可以看见。所有控件都有具有的事件: 1、KeyDown : 当用户按下键盘上一个键时发生的。 2、KeyUp : 在用户松开键盘上按下的键时发生的。 3、KeyPress : 在Key Down和Key Up事件之间发生。 4、MouseDown : 在鼠标被按下时触发的。 5、MouseUp :在用户松开鼠标键时发生的。 6、Click :在用户单击鼠标左键时发生的。 7、DblClick :在用户双击鼠标时发生的。 一、窗体(Form) 属性: 1、Caption: 表示窗体标题栏的文字。 2、BorderStyle: 一般情况下为默认值,若更改为下列值: 1)值为0:没有窗体标题栏 2)值为1:窗体运行之后不能改变大小 3、WindowState: 设置窗体的大小。 3)值为0:窗体正常大小 4)值为1:窗体最小化 值为2:窗体最大化 4、BackColor: 表示窗体的背景颜色 事件: 1、Initialize(初始化事件): 在窗体加载和显示之前触发,这个事件只触一次。 2、Load(加载事件): 用来完成窗体显示之前需要完成的动作。 3、Activate/Deactivate (激活/非激活事件):是用户在同一个应用程序的两个或多个窗体之间移动时触发的。 4、QueryUnload(条件卸载事件): 决定窗体是如何关闭的。 触发QueryUnload事件时Unload 的参数和因素有: 1)VbFormControlMenu值为0 :选中窗体控件菜单中的Close命令。 2)VbFormCode值为1 :从代码中调用Unload 语句。 3)VbAppWindows值为2 :终止当前的Windows操作系统。 4)VbFormMDIForm值为4 :因为终止MDI父窗体而导致MDI子窗体的终止。 5、Terminate(终止事件):在窗体的所有实例从内存中清除时发生,只触发一次。方法: 1、Load:加载窗体,但不在屏幕上显示 2、Unload:卸载窗体,既从屏幕上也从内存中清除窗体。 3、Show:加载窗体并在屏幕上显示窗体。Show分为:

相关主题
文本预览
相关文档 最新文档