1、第6章窗体应用程序设计本章内容6.1 一个简单的文本编辑器6.2 组件的公共属性、事件和方法6.3 常用的控件6.4 常用的对话框6.5 消息对话框6.6 菜单和工具栏的设计6.7实例多文档界面编辑器6.1 一个简单的文本编辑器一个简单的文本编辑器应用程序:可以实现对txt文件的读取和保存以及对字符的简单 编辑操作。6.1 一个简单的文本编辑器6.L1创建文本编辑器程序的步骤(1)创建C#窗体应用程序TxtEditApp:将窗体Forml的text属ill,性值设置为“简单的文本编辑器”,然后在窗体1 件 richTextBoxl 和组件 openFileDialogl、save toolSt
2、rip 1,并将控件richTextBoxl 的 Dock属性值1 使之充满整个窗体。U添加控y optnFiltDi lo(l stvFilDi*10(1-2-nnuStripl6.1 一个简单的文本编辑器6.L1创建文本编辑器程序的步骤(2)选择菜单“项目|添加组件命令,在打开的“添加新项”对话框中选择“Windows窗体”项,然后单击“添加”按钮,即 可为程序添加一个新的窗体(其默认名为Form2)。在新窗体上 添加几个Label控件,以显示相关信息:6.1 一个简单的文本编辑器6.1.1创建文本编辑器程序的步骤(3)点击控件richTextBoxl上方的菜单栏,然后依次输入相应的 菜单
3、项:简单的文本编辕修6.1 一个简单的文本编辑器6.L1创建文本编辑器程序的步骤(4)在菜单设计界面中双击Open file”项,在自动形成的 openFileToolStripMenuItem_Click()函数中编写相关代码,结果如 下:一/“Open file”菜单项private void openFileToolStripMenuItem_Click(object sender,EventArgs e)(openFileDialogl.Filter=txt files(*.txt)|*.txtH;if(openFileDialogl.ShowDialog()=DialogResult
4、OK)(richTextBoxl.LoadFile(openFileDialogl.FileName,RichTextBoxStreamType.PlainText);6.1 一个简单的文本编辑器6.L1创建文本编辑器程序的步骤用同样的方法为其他菜单项编写事件处理代码,结果如下:/“Save file”菜单项private void saveFileToolStripMenuItem_Click(object sender,EventArgs e)saveFileDialogl.Filter=txt 行if(saveFileDialogl.ShowDialog()=DialogResult.
5、OK)(richTextBoxl.SaveFile(saveFileDialogl.FileName9 RichTextBoxStreamType.PlainText);)/“Exit”菜单项private void exitToolStripMenuItem_Click(object sender,EventArgs e)Close();)/“About”菜单项private void aboutToolStripMenuItem_Click(object sender,EventArgs e)(-Form2 frm=new Form2();frm.ShowDialogO;6.1 一个简单的
6、文本编辑器6.L1创建文本编辑器程序的步骤(4)执行该程序后,选择相应的菜单命令,可以打开txt文件,也可以在richTextBoxl编辑文本后保存到txt文件中:盅简单的文本编辑g RO叵I区IFile Help 京离原上苴丁 一岁一枯荣.野火烧不尽 春风吹又生|6.1 一个简单的文本编辑器6.L1创建文本编辑器程序的步骤【说明】组件是指没有界面的组件(运行时不可见);控件是指有界面的组件(运行时可见)。但有的时候也把两者统称为组件,其具体意义要根据上下文来决 定。6.2组件的公共属性、事件和方法I AC#中的组件都继承System.Object类I A窗体控件都继承了 System.Win
7、dows.Forms.Control类(该类也继I 承Object亲)因此了解System.Object类的一些常用属性、事件和方法对掌握下 I文要介绍的常用组件的使用方法有着事半功倍的效果。6.2组件的公共属性、事件和方法I 6.2.1 Object类I 1.public virtual bool Equals(object obj)I 该方法用于判断当前对象和给定的对象是否相等。在默认情况 下(没有重写该方法时),对象a和b相等是指a和b是非空的且指I向同一个对象。I 由于Equals。方法是一个虚方法,我们可以在定义的类中重写它。这样,对象a和b在什么情况下才算相等是完全由重写代码来决定
8、I实际上,C#的许多类都重写了Equals。方法。I 2.public virtual int GetHashCode()GetHashCode()方法返回object对彖的哈希码,哈希码是通过一定I的算法并根据对象在内存中的地址来计算的。此算法可以保证不 同对象的哈希码重复的可能性很小。6.2组件的公共属性、事件和方法6.2.1 Object 类2.public virtual string ToString()在定义的类中可以重写ToString()方法。如果没有重写,则该方法 返回对象所属类的名称。实际上,C#提供的类几乎都重写了该方 法,其中大部分的功能是将相应类型的数据转化为字符串
9、数据。6.2组件的公共属性、事件和方法6.2.2 Control类Control类的属性、方法和事件是所有窗体控件供有的。了解 Control类的特征对窗体应用程序设计是至关重要的。1.Control类的属性(1)Text属性Text属性值就是控件显示的文本内容,也是用户输入字符创串地 方,其类型为字符串型。在程序运行的过程中,该属性值可读可 写。如EditLText=北京奥运”;向编辑框写字串String str=Editl-Text;读取焉箱框中的内容(2)Anchor属性该属性用于设定控件与其容器控件在四个边沿(左、右、上、下)距离上的固定位置关系。Anchor属性是一种集合类型,可以同
10、时取多个值,如:richTextBoxl.Anchor=(Anchor Styles.Top|Anchor Styles.Bottom);6.2组件的公共属性、事件和方法6.2.2 Control类(3)Dock属性该属性用于设定子控件在其容器控件中的填充方式,其取值和意 义是:DockStyle.Fill:任何时候子控件都填充整个容器控件DockStyle.None:子控件按照设计时的界面出现,不随容器控件 的大小发生变化而变化DockStyle.Top、DockStyle.Bottom、DockStyle.LeftDockStyle.Right:分别表示子控件向上、向下、向左和向右充满 半
11、个容器控件,容器控件的大小发生变化时子控件仍然保持这种 状态6.2组件的公共属性、事件和方法6.2.2 Control类(3)Dock属性该属性用于设定子控件在其容器控件中的填充方式,其取值和意 义是:DockStyle.Fill:任何时候子控件都填充整个容器控件DockStyle.None:子控件按照设计时的界面出现,不随容器控件 的大小发生变化而变化DockStyle.Top、DockStyle.Bottom、DockStyle.LeftDockStyle.Right:分别表示子控件向上、向下、向左和向右充满 半个容器控件,容器控件的大小发生变化时子控件仍然保持这种 状态Control类的
12、其他属性,请参见教材中表6.1。6.2组件的公共属性、事件和方法6.2.2 Control类2.Control类的方法(1)FindForm。方法该方法返回控件所在的窗体。(2)Focus。方法该方法的作用是使控件获得焦点。(3)GetContainerControl()法该方法返回父控件链的下一个ContainerControL(4)Hide。方法该方法用于隐藏控件,使之不可见,但控件并没有被销毁,相当于令 visible 属 性值为 false o6.2组件的公共属性、事件和方法6.2.2 Control类2.Control类的方法(5)Show。方法该方法用于显示控件,使之可见,但控件并
13、不是创建一个新的控件,而是 显示已有的控件,相当于令visible属性值为true。(6)Scale(int m)方 法将控件放大或缩小控件为原来由m倍。(7)Contains(Control ctl)方法该方法判断控件ctl是否是当前控件的子控件,如果是则返回true,否则返 回 false。(8)GetTopLevel。方法判断当前控件是否为顶层控件,如果是则返回true,否则返回fake。6.2组件的公共属性、事件和方法I 6.2.2 Control类I 3.Control类的事件|点击、滚动、移动鼠标,按下键盘等操作都会产生相应的事件,事件发生时会调用相应的事件处理函数。这种处理函数实
14、际上也 是Control类的方法,与上面方法不同的是,事件处理函数是在事I件发生时由系统自动调用(而不是由用户代码调用);而上面方 I法则使由用户代码调用。显然,利用事件和处理函数之间的自动 调用关系,可以方便实现上面方法难以完成的一些功能。Control类定义了大量的事件,当在属性编辑框中双击事件名右边 的空白处时即可自动产生事件处理函数的框架,我们只需在函数 I框架中编写相应的事件处理代码即可。6.2组件的公共属性、事件和方法I 6.2.2 Control类I 3.Control类的事件鼠标事件ClickDoubleClick MouseEnter MouseLeave MouseDown
15、 MouseUp MouseMove MouseHover 键盘事件KeyPress KeyDownKey Up拖动事件DragDrop DragEnter DragLeaveDragOver 焦点事件EnterLeave6.3常用的控件6.3.1按钮类控件 I(1)Button控件(Button控件具有一定的代表性,这里稍微详细地介绍此控件)-Button控件是最常用的按钮控件,几乎在窗体应用程序中都涉及 到它。它允许用户通过单击操作来执行某些代码。单击一个按钮 相当于执行相应的一个函数,该函数就是单击Button按钮时产生 的Click事件的事件处理函数。.在设计界面中双击Button控件
16、或选中该按钮后在属性框中双击 I“Click”项右边的空白处)即可自动形成该函数框架:private void buttonl_Click(object sender EventArgs e)HI事件处理代码!I当单击Button控件时,该函数被执行。我们需要做的是,根据需 要在该函数中编写相应的代码,以完成既定的功能。6.3常用的控件6.3.1 按钮类控件buttonl_Click(obj ect sender,EventArgs e)有两个参数(其他许多 事件处理函数也有这两个参数):sender:保存了导致该事件发生的控件e:则保存了所发生的事件例如,我们可以用下列代码显示这两个参数的
17、相关信息:private void buttonl_Click(object sender,EventArgs e)Button bt=(Button)sender;textBoxl.Text=bt.Text;Type ty=e.GetType();textBoxl.Text=ty.ToString();)结果textBoxl和textBox2分别显示“buttonl”和Sy stem.Windo ws.F orms.MouseE vent Args”o6.3常用的控件6.3.1 按钮类控件(2)RadioButton按钮(单选按钮)Checked属性:当该值为true时处于选中状态,为fal
18、se时处于未 选中状态,反之亦然。RadioButton按钮具有排斥性,即当一个按钮为选中状态时,其 他的RadioButton则免于未被选中状态CheckedChanged事件:当单选按钮的状态发生改变(Checked 属性值由true变为false,或由false变为true)时,CheckedChanged事件被触妥,紧接署执行CheckedChanged()方 法。因此,希望在单选按钮的状态发生改变时完成一些操作,相应代码应该在该方法中编写:private void radioButtonl_CheckedChanged(object sender5EventArgs e)(事件处理代
19、码6.3常用的控件6.3.1 按钮类控件(3)CheckBox按钮(复选按钮)AChecked属性:复选按钮与单选按钮很相似,它也通常成组出现,其选中与否也完全由它的Checked属性值来决定。不同的是,在 同一时刻允许有0个或多个复选按钮被选中。ACheckedChanged事件:其触发方式和处理函数的调用和编写方 法与单选按钮的相同。6.3常用的控件6.3.1按钮类控件【例6.1】按钮类控件的应用举例。本例创建一个窗体应用程序实现的功能包括:(1)将输入的字符串转换为相应的大写或小写字符串;(2)可以指定转换的方式(大写或小写),如果不指定方式则原样输出;(3)可以限制输入字符的范围:字母
20、数字或其他可视字符。程序界面6.3常用的控件6.3.1按钮类控件【例6.1】按钮类控件的应用举例。本例创建一个窗体应用程序实现的功能包括:(1)将输入的字符串转换为相应的大写或小写字符串;(2)可以指定转换的方式(大写或小写),如果不指定方式则原 样输出;(3)可以限制输入字符的范围:字母、数字或其他可视字符。设计思想:(1)字符串的大、小写转换可以用类string的ToLower()和ToUpper()方法来实现;(2)转换方式的指定通过单选按钮来辅助完成;(3)字符输入范围的限制则由辅助完成,其中还用到了TextBox 类型控件的KeyPress事件和KeyUp事件。6.3常用的控件6.
21、3.1按钮类控件程序的关键代码如下:public partial class Forml:Form(private int flag=0;private string str=public Forml()(InitializeComponent();private void buttonl_Click(object sendei;EventArgs e)-str=textBoxl.Text;if(flag=1)str=str.ToLower();else if(flag=2)str=str.ToUpper();如果flag=O,则表示原样输出textBoxl.Text=str;6.3常用的控件
22、6.3.1按钮类控件private void radioButtonl_CheckedChanged(object sender,EventArgs e)flag=l;1表示转换为小写字符private void radioButton2_CheckedChanged(object sender,EventArgs e)flag=2;2表示转换为大写字符6.3常用的控件6.3.1按钮类控件private void textBoxl_KeyPress(obj ect sender,KeyPressEventArgs e)char c=e.KeyChar;int ascii=c;获取字符的ASCI
23、I码if(ascii=65&ascii=97&ascii=48&ascii SelectionLengthM 性该属性值返回文本框中已被选中的文本的长度,即SelectedText的 长度。6.3常用的控件6.3.2文本类控件 SelectionStart该属性值返回文本框中已被选中的文本的开始位置,如果没有文 本被选中,则返回紧跟在当前光标后面的字符的位置。Modified 属性当更改文本框的内容时,该属性被设置为true。AReadOnly 属性当Readonly属性值为true时文本框中的字符只能被读(如可复制 等),而不能进行写操作(如修改、删除等)。Readonly属性的 默认值为f
24、alse,这时文本框可读可写。PasswordCharM 性当PasswordChar属性值设置为“*”,在用该编辑框输入字符时 它显示的都是(显示星号);当然也可以PasswordChar属 性值设置为其它字符,那么在输入时就显示相应的字符。该属性 的默认值为空,这时输入的字符被原样显示。6.3常用的控件6.3.2文本类控件A Border Style 属性Border Style属座有三个值:None、FixedSingle 和 Fixed3D(默认 值),不同取值的效果如下图:None效果FixedSingle 效果Fixed3D 效果AHideSelectioni当取值为true时,如
25、果文本框失去焦点,则被选中的文本不再保 持被选中状态;当该属性取值为false时,如果文本框失去焦点,则被选中的文本仍然保持被选中状态。6.3常用的控件6.3.2文本类控件A Multiline属性Multiline为加尔型属性。当其取值为false(默认值)时,表示只 能输入一行字符;当取值为true时,表示允许输入多行字符,rn表示换行。例如,下列代码将在textBoxl中输出两行字符:textBoxl.Text+=naaaaaaarnn;textBoxl.Text+=ncccH;AScrollBars属性该属性用于设置文本框的滚动条。它有四种取值:None:没有滚动条Horizontal
26、只有水平方向上有滚动条Vertical:只有垂直方向上有滚动条Both:垂直和水平方向上都有滚动条6.3常用的控件6.3.2文本类控件ALines属性当Multiline属性为true时,文本框中允许编辑多行字符。利 用文本框的Lines属性则可以实现逐行访问。Lines属性值的类型为字符串数组-string。例如,可以用下列语句将文本框textBoxl中的数据逐行读出来:string lines=textBoxl.Lines;for(int i=0;i Select(int start,int length)方法该方法用于选中文本框中从索引为start的字符开始一共length字 符的文太
27、AUndo()方法该方法用于撤销上一次的操作。ACopy()方法该方法用于将文本框中被选中的字符复制到剪贴板中。该方法用于将剪贴板中的内容替换到文本框中被选中的内容。ACut()方法该方法用于将文本框中被选中的字符剪切到剪贴板中。6.3常用的控件6.3.2文本类控件(3)重要事件AModi 仃 edChanged 事件当Modified属性值发生变动时该事件发生。ATextChanged 事件一旦文本框的内容发生改变,都会立即触发该事件,从而调用相 应的事件处理函数。6.3常用的控件6.3.2文本类控件2.RichTextBox控件(1)RichTextBox控件重要的属性A Selectio
28、nColor该属性用于设置被选中文本的颜色。例如:richTextBoxl.SelectionColor=Color.Red;/红色 SelectionF out 属性该属性用于设置被选中文本的字体。例如:richTextBoxl.SelectionFont=new Font(隶书”,18,FontStyle.Bold|FontStyle.Italic|FontStyle.Underline);6.3常用的控件6.3.2文本类控件(2)RichTextBox控件重要的方法AFind()方法该方法用于在RichTextBox控件中寻找一个给定的字符串,返回字 符串在RichTextBox控件中第
29、一个匹配字符的索引,如果查找失败 则返回它重载有多个版本,常用的包括:int richTextBoxl.Find(string str);int richTextBoxl.Find(string str,RichTextBoxFinds option);int richTextBoxl.Find(string str,int start,RichTextBoxFinds option);int richTextBoxl.Find(string str,int start,int end,RichTextBoxFinds option);6.3常用的控件6.3.2文本类控件ALoadFile。方
30、法该方法用于将指定的文件加载到RichTextBox控件中,它也有三种 重载版本,与上述SaveFile()方法分别对应的是:void LoadFile(string path)void LoadFile(string path,RichTextBoxStreamType fileType)例如,下列语句将在控件richTextBox2中打开Ctext.rtf文件:richTextBox2.LoadFile(nC:/text.rtfn);或者,richTextBox2.LoadFile(nC:/text.rtfRichTextBoxStreamType.RichText);6.3常用的控件6.
31、3.2文本类控件(3)RichTextBox控件重要的事件AModi 仃 edChanged 事彳牛RichTextBox控件中国文本一旦受到更改,立即触发该事件。SelectionChanged 事件触发条件是:光标移动,即一旦移动光标,该事件即可发生。因 此可以利用该事件监控光标。6.3常用的控件6.3.3列表类控件LListBox控件(列表框)(1)重要属性 SelectionModeM 性当该属性取值为SelectionMode.One时表示一次只能选中ListBox控件中的1项(默认设置):listBoxl.SelectionMode=SelectionMode.One;当为Sele
32、ctionMode.MultiSimple时表示可以选择多项,为None时 不能选择任何项。A Items.Count属性该属性返回ListBox控件中项的总数。6.3常用的控件6.3.3列表类控件 SelectedlndexM 性该属性返回被选中的项的索引值;如果ListBox控件允许选择多项(SelectionModeM iiMSelectionMode.MultiSimple),则该属 性返回所有被选中的项中索引值最小的项的索引值。SelectedltemM 性该属性返回被选中的项;如果ListBox控件允许选择多项,则该属 性返回所有被选中的项中索引值最小的项。Selectedltem
33、s i属 性该属性返回所有被选中的项中索引值为i的项。A Items i属性该属性返回索引值为i的项。6.3常用的控件6.3.3列表类控件 Selectedlndices.CountM 性该属性返回所有被选中的项的总数。例如,利用下列语句可以将listBoxl控件中所有被选中的项复制到listBox2控件中:for(int i=0;i SelectedlndexChanged 事件当焦点在ListBox控件中的项之间发生变动或点击ListBox控件时 都会触发该事件。相应的处理函数如下:private void listBoxl_SelectedIndexChanged(object send
34、erEventArgs e)(事件处理代码6.3常用的控件6.3.3列表类控件2 CheckedListBox控件CheckedListBox隹件和ListBox控件的用法基本相同,不同的 是,前者的每项旁边增加了 一个复选框,表示该项是否被选中。因此,CheckedListBox控件增加了 一些支持访问这种复选框的属 性等。例如,CheckedListBox控件的 Checkedltems.CountM 桂值 表示一共被选中的复选框的个数,Checkedltemsi属性则返回索 引为i的在复选框中被选中的项。6.3常用的控件6.3.3列表类控件3 ComboBox控件(组合框)ComboBo
35、x隹件和ListBox控件也比较相似,不同的是,前者 是将其包含的项“隐藏”起来(后者是全部显示),通过点击下 拉按钮来选择所需的项(只能选一项),被选中的项将在文本框 中显示出来6.3常用的控件6.3.3列表类控件4 ListView控件(1)重要属性Altems.Count 属性和 Selectedltems.CountM 性属性Items.Count返回ListView控件所包含由项的总数;属性Selectedltems.Count则返回ListView控件中已被选中的项的个数。A Items i属性该属性返回ListView控件中索引为i的项,如果要返回项的标题,则用 Items i.
36、Text属性。例如,如果要访问ListView控件中所有的项,则可以用下列代码 实现:for(int i=0;i Selectedltems i属 性该属性返回在被选中的项中索引为i的项。它一般与 Selectedltems.Count 属性搭配使用。例如,下列代码的作用是在ListBoxl控件中列出listViewl控件中 所有已被选中的项(的Text值)for(int i=0;i SelectedlndexChanged 事件ListView控件中任意一项的选中状态发生变化时都会触发该事件,但项前的复选框的选中状态发生变化时不会触发该事件。AltemCheck 和temChecked 事件
37、这两个事件十分相似:项的复选框的状态发生改变时都会触发该 这两个事件。其区别主要体现在,它们的事件处理函数的参数e返 回的值不一样。其中,对于ItemCheck事件,e.Item返回的是复选 框联态被改羹的项;对于ItemChecked串,e.CurrentValueM回 的是定诙态诙变之前项由复选框的值(Checked或Unchecked),e.New Value返回的是在联态改变之后项的复选框的值。6.3常用的控件6.3.3列表类控件5 Tree View 控件TreeView控件是以树状的形式显示其包含的项。例如,Windows 操作系统中的资源管理器就是以树状的形式展示目录。(1)Tr
38、eeView控件的重要属性和方法AlmageList 属性该属性用于加蓑ImageList控件对象,以为Tree View控件中的节点 提供图标。ANodes.Count 属性该属性返回TreeView控件中根节点的数量。ANodesi属性该属性返回TreeView控件中索引为i的根节点。A Parent属性该属性返回TreeView控件所在的容器对象,如Forml等。6.3常用的控件6.3.3列表类控件A TopNode属性该属性返回TreeView控件中的第一个根节点(索引为0的根节点)。如果Tree View控件中没有节点,则返回null。A CheckBoxes当该属性的值被设置为tr
39、ue时,在每个节点前面都增加一个复选 框。ANodes.Clear。方法该方法用于清空TreeView控件中的所有节点,如:treeViewl.Nodes.ClearQ;6.3常用的控件6.3.3列表类控件(2)TreeNode类的重要方法和属性A TreeNode类的局造函数TreeView控律卡由节点实际上是由TreeNode类的对象构成。TreeNode类黑供了重载构造函数的多种版本,用于创TreeNode 类的对象(节点)。其中,常用的包括两种:TreeNode TreeNode(string text)TreeNode TreeNode(string text,int imagein
40、dex,int selectedlmagelndex)其中,参数text用于设置节点的名称(Text属性值);imageindex 和selectedlmagelndex分别用于设置节点未被选中和已被选中时要 显示的图标的索引(此索引与图标的对应关系在ImageList控件设 置),如果只能这两个参数,则默认均使用索引为0的图标。6.3常用的控件6.3.3列表类控件(2)TreeNode类的重要方法和属性A TreeNode类的构造函医TreeView控祥京电节点实际上是由TreeNode类的对象构成。TreeNode类提供了重载构造函数的多种版本,用于创建TreeNode 类的对象(节点)。
41、其中,常用的包括两种:TreeNode TreeNode(string text)TreeNode TreeNode(string text,int imagelndex int selectedlmagelndex)例如,下面代码将创建名为“中国大学”的节点,并添加为控 件treeViewl的一个根节点:TreeNode node=new TreeNode(H 中国大学”);treeViewl.Nodes.Add(node);6.3常用的控件6.3.3列表类控件ANodes.Add()方法该方法用于为当前节点增加子节点。例如:TreeNode node,parentnode;node=new
42、 TreeNode(n 中国大学”);treeViewl.Nodes.Add(node);在treeViewl控件中增加根节点“中国大学”parentnode=node;node=new TreeNode(清华大学);parentnode.Nodes.Add(node);为“中国大学”增加子节点“清华大学”node=new TreeNode(北京夫学);parentnode.Nodes.Add(node);为“中国大学”增加子节点“北京大学日中国大学 清华大学 北京大学6.3常用的控件6.3.3列表类控件Expand()和 ExpandAH()方法这两个方法都是用于展开节点,不同的是,Expa
43、nd。方法用于展开当前节 点的所有子节点,而不展开孙子节点(即子节点以下的节点不展开);而 ExpandAHO方法则展开所有以当前节点为根节点的所有节点(包括子节 点而孙子节点)。A Collapse。方法该方法则收缩以当前节点为根节点的子树(变为一个节点)。A Remove。方法该方法用于删除当前节点及其子节点和孙子节点。GetNodeCount(bool includeSubTree)*法该方法返回子节葭和孙子节点的个数,其中,如果参数includeSubTree的 值为true则返回当前节点的子节点以及所有孙子节点的数量;如果为false 则仅返回子节点的数量。6.3常用的控件6.3.3
44、列表类控件下面介绍TreeNode类的常用属性。A Text属性该属性用于设置或获取节点所显示的文本。ANodesi属性该属性返回当前节点的子节点中索引为i的子节点。A Checked属性当节点前面的复选框被选中时,该属性值为true;反之,当令该 属性值为true时,相应节点前面的复选框处于被选中状态(打 勾)。AFuUPath 属性该属性返回从根节点到当前节点的路径。A Parent属性该属性返回父节点。6.3常用的控件6.3.3列表类控件Almagelndex 和 SelectedlmagelndexM 性如果Imagelndex属性的值被设置为n,则表示使用索引为n的图标 作为该节点在
45、未被选中时显示的图标;MSelectedlmagelndex 属性的值被设置为m,则表示使用索引为m的图标作为该节点在 已被选中时显示的图标。6.3常用的控件6.3.3列表类控件(3)TreeView控件的重要事件AAfterSelect 和BeforeCheck 事件该事件是在选中节点后发生,但点击节点前面的或时不 会发生。BeforeCheck事件则是在选中节点前发生。AClick事件点击TreeView控件中的任何内容都会触发该事件,包括点击节点 前面的或A AfterExpand 和 BeforeExp and 事件AfterExp and和BeforeExpand事彳牛分别是在展开节
46、点后和展开节 点前发生。A After Collapse和 BeforeCollapse事件AfterCollapse和BeforeCollapse事彳牛分别是在收缩节点后和收缩节 点前发生。AfterCheck和BeforeCheck事件分别是在节点前面的复选框的状态 发生改变后和改变前发生。6.3常用的控件6.3.3列表类控件6 DateTimePicker 控件DateTimePicker隹件可以通过鼠标选择指定的日期。默认情 况下,DateTimePicker隹徘以文本框形式由现,并带有一个下枝 箭头。用户单击下拉箭头时,会出现一个日历窗口,用户可从中 选择日期。DateTimePic
47、ker控件常用的事件是VahieChanged事件,当用 户在运行时点击该控件会产生该事件。因此,通常在此事件的处 理函数中编写的处理代码。当用户从日历窗口选择一个日期后,获得的日期值将保存在 属性Value中。因此,一般要通过该属性来获取相应的日期成份,如:DateTime dt=dateTimePickerl.Value;6.4常用的对话框641打开和保存文件对话框1.打开文件对话框打开文件对话框(OpenFileDialog)用于显示让用户定位文件和 选择文件的对话框,其作用是方便、快速地让用户找到文件的路6.4常用的对话框641打开和保存文件对话框1.打开文件对话框打开文件对话框(Op
48、enFileDialog)用于显示让用户定位文件和 选择文件的对话框,其作用是方便、快速地让用户找到文件的路 径。ShowDialog()方法当调用该方法时会弹出如上图所示的对话框。当点击对话框中的【打开】按钮时该函数返回DialogResultOK;当点击【取消】按 钮时则该函数返回DialogResult.Cancel。因此,据此可以判断 OpenFileDialog对话框是通过点击【打开】按钮夹闭还是通过点 击【取消】按钮关闭。实际上,该方法经常采用如下的调用方式:if(openFileDialogl.ShowDialog()=DialogResult.OK)(相关代码 6.4常用的对话
49、框641打开和保存文件对话框InitialDirectoryM 性该属性用于设定OpenFileDialog对话框要显示的初始目录。A Filter 属性该属性用于设置对话框中过滤文件字符串,即设置的字符串决定 了哪些类型的文件能在对话框中可见。例如:openFileDialogl.Filter=txt 文件文件files(*/)|*/;6.4常用的对话框641打开和保存文件对话框A Filter Index 属性该属性用于设定显示的字符串的索引。FileN ame 属性该属性返回版选中文件的绝对路径,这也是OpenFileDialog对话 框的最终输出结果。A Title属性该属性用于设置对
50、话框的标题。AVCultiselectJ该属性如果被设置为true(默认值为false)时,允许在OpenFileDialog对话框中选择多个文件(通过按Ctrl键来选择多个 文件)。6.4常用的对话框641打开和保存文件对话框ASafeFileNames 属性该属性的值为字符串数组类型(string)o当Multiselect属性被 设置为true时,可选择多个文件,而被选中的文件的文件名则保 存在此属性中。例如,可以通过下列方式来访问其中的文件名:for(int i=0;i OverwritePromptM 性当该属性值被设置为true(默认值)时,如果在“文件名”组合 框中设置的文件名与