c#程序设计教学ppt第六章.ppt

上传人:max****ui 文档编号:3398736 上传时间:2019-12-13 格式:PPT 页数:104 大小:1.40MB
返回 下载 相关 举报
c#程序设计教学ppt第六章.ppt_第1页
第1页 / 共104页
c#程序设计教学ppt第六章.ppt_第2页
第2页 / 共104页
c#程序设计教学ppt第六章.ppt_第3页
第3页 / 共104页
点击查看更多>>
资源描述
,第6章窗体应用程序设计,6.1一个简单的文本编辑器6.2组件的公共属性、事件和方法6.3常用的控件6.4常用的对话框6.5消息对话框6.6菜单和工具栏的设计6.7实例多文档界面编辑器,本章内容,6.1一个简单的文本编辑器,一个简单的文本编辑器应用程序:可以实现对txt文件的读取和保存以及对字符的简单编辑操作。,6.1.1创建文本编辑器程序的步骤,6.1一个简单的文本编辑器,(1)创建C#窗体应用程序TxtEditApp:将窗体Form1的text属性值设置为“简单的文本编辑器”,然后在窗体上分别添加控件richTextBox1和组件openFileDialog1、saveFileDialog1、toolStrip1,并将控件richTextBox1的Dock属性值设置为Fill,使之充满整个窗体。,编辑器界面,6.1.1创建文本编辑器程序的步骤,6.1一个简单的文本编辑器,(2)选择菜单“项目|添加组件”命令,在打开的“添加新项”对话框中选择“Windows窗体”项,然后单击“添加”按钮,即可为程序添加一个新的窗体(其默认名为Form2)。在新窗体上添加几个Label控件,以显示相关信息:,6.1.1创建文本编辑器程序的步骤,6.1一个简单的文本编辑器,(3)点击控件richTextBox1上方的菜单栏,然后依次输入相应的菜单项:,6.1.1创建文本编辑器程序的步骤,6.1一个简单的文本编辑器,(4)在菜单设计界面中双击“Openfile”项,在自动形成的openFileToolStripMenuItem_Click()函数中编写相关代码,结果如下:/“Openfile”菜单项privatevoidopenFileToolStripMenuItem_Click(objectsender,EventArgse)openFileDialog1.Filter=txtfiles(*.txt)|*.txt;if(openFileDialog1.ShowDialog()=DialogResult.OK)richTextBox1.LoadFile(openFileDialog1.FileName,RichTextBoxStreamType.PlainText);,6.1.1创建文本编辑器程序的步骤,6.1一个简单的文本编辑器,用同样的方法为其他菜单项编写事件处理代码,结果如下:/“Savefile”菜单项privatevoidsaveFileToolStripMenuItem_Click(objectsender,EventArgse)saveFileDialog1.Filter=txtfiles(*.txt)|*.txt;if(saveFileDialog1.ShowDialog()=DialogResult.OK)richTextBox1.SaveFile(saveFileDialog1.FileName,RichTextBoxStreamType.PlainText);/“Exit”菜单项privatevoidexitToolStripMenuItem_Click(objectsender,EventArgse)Close();/“About”菜单项privatevoidaboutToolStripMenuItem_Click(objectsender,EventArgse)Form2frm=newForm2();frm.ShowDialog();,6.1.1创建文本编辑器程序的步骤,6.1一个简单的文本编辑器,(4)执行该程序后,选择相应的菜单命令,可以打开txt文件,也可以在richTextBox1编辑文本后保存到txt文件中:,6.1.1创建文本编辑器程序的步骤,6.1一个简单的文本编辑器,【说明】组件是指没有界面的组件(运行时不可见);控件是指有界面的组件(运行时可见)。但有的时候也把两者统称为组件,其具体意义要根据上下文来决定。,6.2组件的公共属性、事件和方法,C#中的组件都继承System.Object类窗体控件都继承了System.Windows.Forms.Control类(该类也继承Object类)因此了解System.Object类的一些常用属性、事件和方法对掌握下文要介绍的常用组件的使用方法有着事半功倍的效果。,6.2.1Object类,6.2组件的公共属性、事件和方法,1.publicvirtualboolEquals(objectobj)该方法用于判断当前对象和给定的对象是否相等。在默认情况下(没有重写该方法时),对象a和b相等是指a和b是非空的且指向同一个对象。由于Equals()方法是一个虚方法,我们可以在定义的类中重写它。这样,对象a和b在什么情况下才算相等是完全由重写代码来决定。实际上,C#的许多类都重写了Equals()方法。2.publicvirtualintGetHashCode()GetHashCode()方法返回object对象的哈希码,哈希码是通过一定的算法并根据对象在内存中的地址来计算的。此算法可以保证不同对象的哈希码重复的可能性很小。,6.2.1Object类,6.2组件的公共属性、事件和方法,2.publicvirtualstringToString()在定义的类中可以重写ToString()方法。如果没有重写,则该方法返回对象所属类的名称。实际上,C#提供的类几乎都重写了该方法,其中大部分的功能是将相应类型的数据转化为字符串数据。,6.2.2Control类,6.2组件的公共属性、事件和方法,Control类的属性、方法和事件是所有窗体控件供有的。了解Control类的特征对窗体应用程序设计是至关重要的。,1.Control类的属性(1)Text属性Text属性值就是控件显示的文本内容,也是用户输入字符创串地方,其类型为字符串型。在程序运行的过程中,该属性值可读可写。如Edit1-Text=北京奥运;/向编辑框写字串Stringstr=Edit1-Text;/读取编辑框中的内容(2)Anchor属性该属性用于设定控件与其容器控件在四个边沿(左、右、上、下)距离上的固定位置关系。Anchor属性是一种集合类型,可以同时取多个值,如:richTextBox1.Anchor=(AnchorStyles.Top|AnchorStyles.Bottom);,6.2.2Control类,6.2组件的公共属性、事件和方法,(3)Dock属性该属性用于设定子控件在其容器控件中的填充方式,其取值和意义是:DockStyle.Fill:任何时候子控件都填充整个容器控件DockStyle.None:子控件按照设计时的界面出现,不随容器控件的大小发生变化而变化DockStyle.Top、DockStyle.Bottom、DockStyle.Left、DockStyle.Right:分别表示子控件向上、向下、向左和向右充满半个容器控件,容器控件的大小发生变化时子控件仍然保持这种状态,6.2.2Control类,6.2组件的公共属性、事件和方法,(3)Dock属性该属性用于设定子控件在其容器控件中的填充方式,其取值和意义是:DockStyle.Fill:任何时候子控件都填充整个容器控件DockStyle.None:子控件按照设计时的界面出现,不随容器控件的大小发生变化而变化DockStyle.Top、DockStyle.Bottom、DockStyle.Left、DockStyle.Right:分别表示子控件向上、向下、向左和向右充满半个容器控件,容器控件的大小发生变化时子控件仍然保持这种状态,Control类的其他属性,请参见教材中表6.1。,6.2.2Control类,6.2组件的公共属性、事件和方法,2.Control类的方法(1)FindForm()方法该方法返回控件所在的窗体。(2)Focus()方法该方法的作用是使控件获得焦点。(3)GetContainerControl()方法该方法返回父控件链的下一个ContainerControl。(4)Hide()方法该方法用于隐藏控件,使之不可见,但控件并没有被销毁,相当于令visible属性值为false。,6.2.2Control类,6.2组件的公共属性、事件和方法,2.Control类的方法(5)Show()方法该方法用于显示控件,使之可见,但控件并不是创建一个新的控件,而是显示已有的控件,相当于令visible属性值为true。(6)Scale(intm)方法将控件放大或缩小控件为原来的m倍。(7)Contains(Controlctl)方法该方法判断控件ctl是否是当前控件的子控件,如果是则返回true,否则返回false。(8)GetTopLevel()方法判断当前控件是否为顶层控件,如果是则返回true,否则返回false。,6.2.2Control类,6.2组件的公共属性、事件和方法,3.Control类的事件点击、滚动、移动鼠标,按下键盘等操作都会产生相应的事件,事件发生时会调用相应的事件处理函数。这种处理函数实际上也是Control类的方法,与上面方法不同的是,事件处理函数是在事件发生时由系统自动调用(而不是由用户代码调用);而上面方法则使由用户代码调用。显然,利用事件和处理函数之间的自动调用关系,可以方便实现上面方法难以完成的一些功能。Control类定义了大量的事件,当在属性编辑框中双击事件名右边的空白处时即可自动产生事件处理函数的框架,我们只需在函数框架中编写相应的事件处理代码即可。,6.2.2Control类,6.2组件的公共属性、事件和方法,3.Control类的事件鼠标事件ClickDoubleClickMouseEnterMouseLeaveMouseDownMouseUpMouseMoveMouseHover键盘事件KeyPressKeyDownKeyUp,拖动事件DragDropDragEnterDragLeaveDragOver焦点事件EnterLeave,6.3.1按钮类控件,6.3常用的控件,(1)Button控件(Button控件具有一定的代表性,这里稍微详细地介绍此控件)Button控件是最常用的按钮控件,几乎在窗体应用程序中都涉及到它。它允许用户通过单击操作来执行某些代码。单击一个按钮相当于执行相应的一个函数,该函数就是单击Button按钮时产生的Click事件的事件处理函数。,在设计界面中双击Button控件(或选中该按钮后在属性框中双击“Click”项右边的空白处)即可自动形成该函数框架:privatevoidbutton1_Click(objectsender,EventArgse)/事件处理代码当单击Button控件时,该函数被执行。我们需要做的是,根据需要在该函数中编写相应的代码,以完成既定的功能。,6.3.1按钮类控件,6.3常用的控件,button1_Click(objectsender,EventArgse)有两个参数(其他许多事件处理函数也有这两个参数):sender:保存了导致该事件发生的控件e:则保存了所发生的事件例如,我们可以用下列代码显示这两个参数的相关信息:privatevoidbutton1_Click(objectsender,EventArgse)Buttonbt=(Button)sender;textBox1.Text=bt.Text;Typety=e.GetType();textBox2.Text=ty.ToString();结果textBox1和textBox2分别显示“button1”和“System.Windows.Forms.MouseEventArgs”。,6.3.1按钮类控件,6.3常用的控件,(2)RadioButton按钮(单选按钮),Checked属性:当该值为true时处于选中状态,为false时处于未选中状态,反之亦然。RadioButton按钮具有排斥性,即当一个按钮为选中状态时,其他的RadioButton则处于未被选中状态,CheckedChanged事件:当单选按钮的状态发生改变(Checked属性值由true变为false,或由false变为true)时,CheckedChanged事件被触发,紧接着执行CheckedChanged()方法。因此,希望在单选按钮的状态发生改变时完成一些操作,相应代码应该在该方法中编写:privatevoidradioButton1_CheckedChanged(objectsender,EventArgse)/事件处理代码,6.3.1按钮类控件,6.3常用的控件,(3)CheckBox按钮(复选按钮)Checked属性:复选按钮与单选按钮很相似,它也通常成组出现,其选中与否也完全由它的Checked属性值来决定。不同的是,在同一时刻允许有0个或多个复选按钮被选中。CheckedChanged事件:其触发方式和处理函数的调用和编写方法与单选按钮的相同。,6.3.1按钮类控件,6.3常用的控件,【例6.1】按钮类控件的应用举例。本例创建一个窗体应用程序实现的功能包括:(1)将输入的字符串转换为相应的大写或小写字符串;(2)可以指定转换的方式(大写或小写),如果不指定方式则原样输出;(3)可以限制输入字符的范围:字母、数字或其他可视字符。,程序界面,6.3.1按钮类控件,6.3常用的控件,【例6.1】按钮类控件的应用举例。本例创建一个窗体应用程序实现的功能包括:(1)将输入的字符串转换为相应的大写或小写字符串;(2)可以指定转换的方式(大写或小写),如果不指定方式则原样输出;(3)可以限制输入字符的范围:字母、数字或其他可视字符。,设计思想:(1)字符串的大、小写转换可以用类string的ToLower()和ToUpper()方法来实现;(2)转换方式的指定通过单选按钮来辅助完成;(3)字符输入范围的限制则由辅助完成,其中还用到了TextBox类型控件的KeyPress事件和KeyUp事件。,6.3.1按钮类控件,6.3常用的控件,程序的关键代码如下:publicpartialclassForm1:Formprivateintflag=0;privatestringstr=;publicForm1()InitializeComponent();privatevoidbutton1_Click(objectsender,EventArgse)str=textBox1.Text;if(flag=1)str=str.ToLower();elseif(flag=2)str=str.ToUpper();/如果flag=0,则表示原样输出textBox2.Text=str;,6.3.1按钮类控件,6.3常用的控件,privatevoidradioButton1_CheckedChanged(objectsender,EventArgse)flag=1;/1表示转换为小写字符privatevoidradioButton2_CheckedChanged(objectsender,EventArgse)flag=2;/2表示转换为大写字符,6.3.1按钮类控件,6.3常用的控件,privatevoidtextBox1_KeyPress(objectsender,KeyPressEventArgse)charc=e.KeyChar;intascii=c;/获取字符的ASCII码if(ascii=65,6.3.1按钮类控件,6.3常用的控件,privatevoidtextBox1_KeyUp(objectsender,KeyEventArgse)textBox1.Text=str;textBox1.Focus();/将光标置于最后一个字符后面textBox1.Select(textBox1.Text.Length,0);,6.3.2文本类控件,6.3常用的控件,1.TextBox控件(文本框)文本框经常用于获取用户输入的文本或显示程序以文本方式输出的结果,可以用于简单的文本编辑操作。(1)重要属性Text属性该属性是文本框最常用的属性,其显示的文本正是包含在此属性中,类型为string。默认情况下,Text属性可以保存最大长度为2048个字符。该属性可读可写,如:textBox1.Text=中华人民共和国!;strings=textBox1.Text;SelectedText属性该属性值返回文本框中已被选中的文本。SelectionLength属性该属性值返回文本框中已被选中的文本的长度,即SelectedText的长度。,6.3.2文本类控件,6.3常用的控件,SelectionStart属性该属性值返回文本框中已被选中的文本的开始位置,如果没有文本被选中,则返回紧跟在当前光标后面的字符的位置。Modified属性当更改文本框的内容时,该属性被设置为true。ReadOnly属性当ReadOnly属性值为true时文本框中的字符只能被读(如可复制等),而不能进行写操作(如修改、删除等)。ReadOnly属性的默认值为false,这时文本框可读可写。PasswordChar属性当PasswordChar属性值设置为“*”,在用该编辑框输入字符时它显示的都是“*”(显示星号);当然也可以PasswordChar属性值设置为其它字符,那么在输入时就显示相应的字符。该属性的默认值为空,这时输入的字符被原样显示。,6.3.2文本类控件,6.3常用的控件,BorderStyle属性BorderStyle属性有三个值:None、FixedSingle和Fixed3D(默认值),不同取值的效果如下图:HideSelection属性当取值为true时,如果文本框失去焦点,则被选中的文本不再保持被选中状态;当该属性取值为false时,如果文本框失去焦点,则被选中的文本仍然保持被选中状态。,6.3.2文本类控件,6.3常用的控件,Multiline属性Multiline为布尔型属性。当其取值为false(默认值)时,表示只能输入一行字符;当取值为true时,表示允许输入多行字符,rn表示换行。例如,下列代码将在textBox1中输出两行字符:textBox1.Text+=aaaaaaarn;textBox1.Text+=ccc;ScrollBars属性该属性用于设置文本框的滚动条。它有四种取值:None:没有滚动条Horizontal:只有水平方向上有滚动条Vertical:只有垂直方向上有滚动条Both:垂直和水平方向上都有滚动条,6.3.2文本类控件,6.3常用的控件,Lines属性当Multiline属性为true时,文本框中允许编辑多行字符。利用文本框的Lines属性则可以实现逐行访问。Lines属性值的类型为字符串数组string。,例如,可以用下列语句将文本框textBox1中的数据逐行读出来:stringlines=textBox1.Lines;for(inti=0;ilines.Length;i+)/处理第i+1行数据linesi,6.3.2文本类控件,6.3常用的控件,(2)重要方法SelectAll()方法该方法用于选中文本框中所有的文本。Select(intstart,intlength)方法该方法用于选中文本框中从索引为start的字符开始一共length字符的文本。Undo()方法该方法用于撤销上一次的操作。Copy()方法该方法用于将文本框中被选中的字符复制到剪贴板中。Paste()方法该方法用于将剪贴板中的内容替换到文本框中被选中的内容。Cut()方法该方法用于将文本框中被选中的字符剪切到剪贴板中。,6.3.2文本类控件,6.3常用的控件,(3)重要事件ModifiedChanged事件当Modified属性值发生变动时该事件发生。TextChanged事件一旦文本框的内容发生改变,都会立即触发该事件,从而调用相应的事件处理函数。,6.3.2文本类控件,6.3常用的控件,2.RichTextBox控件(1)RichTextBox控件重要的属性SelectionColor属性该属性用于设置被选中文本的颜色。例如:richTextBox1.SelectionColor=Color.Red;/红色SelectionFont属性该属性用于设置被选中文本的字体。例如:richTextBox1.SelectionFont=newFont(隶书,18,FontStyle.Bold|FontStyle.Italic|FontStyle.Underline);,6.3.2文本类控件,6.3常用的控件,(2)RichTextBox控件重要的方法Find()方法该方法用于在RichTextBox控件中寻找一个给定的字符串,返回字符串在RichTextBox控件中第一个匹配字符的索引,如果查找失败则返回-1。它重载有多个版本,常用的包括:intrichTextBox1.Find(stringstr);intrichTextBox1.Find(stringstr,RichTextBoxFindsoption);intrichTextBox1.Find(stringstr,intstart,RichTextBoxFindsoption);intrichTextBox1.Find(stringstr,intstart,intend,RichTextBoxFindsoption);,6.3.2文本类控件,6.3常用的控件,LoadFile()方法该方法用于将指定的文件加载到RichTextBox控件中,它也有三种重载版本,与上述SaveFile()方法分别对应的是:voidLoadFile(stringpath)voidLoadFile(stringpath,RichTextBoxStreamTypefileType)例如,下列语句将在控件richTextBox2中打开C:/text.rtf文件:richTextBox2.LoadFile(C:/text.rtf);或者,richTextBox2.LoadFile(C:/text.rtf,RichTextBoxStreamType.RichText);,6.3.2文本类控件,6.3常用的控件,(3)RichTextBox控件重要的事件ModifiedChanged事件RichTextBox控件中的文本一旦受到更改,立即触发该事件。SelectionChanged事件触发条件是:光标移动,即一旦移动光标,该事件即可发生。因此可以利用该事件监控光标。,6.3.3列表类控件,6.3常用的控件,1.ListBox控件(列表框)(1)重要属性SelectionMode属性当该属性取值为SelectionMode.One时表示一次只能选中ListBox控件中的1项(默认设置):listBox1.SelectionMode=SelectionMode.One;当为SelectionMode.MultiSimple时表示可以选择多项,为None时不能选择任何项。Items.Count属性该属性返回ListBox控件中项的总数。,6.3.3列表类控件,6.3常用的控件,SelectedIndex属性该属性返回被选中的项的索引值;如果ListBox控件允许选择多项(SelectionMode属性值取SelectionMode.MultiSimple),则该属性返回所有被选中的项中索引值最小的项的索引值。SelectedItem属性该属性返回被选中的项;如果ListBox控件允许选择多项,则该属性返回所有被选中的项中索引值最小的项。SelectedItemsi属性该属性返回所有被选中的项中索引值为i的项。Itemsi属性该属性返回索引值为i的项。,6.3.3列表类控件,6.3常用的控件,SelectedIndices.Count属性该属性返回所有被选中的项的总数。例如,利用下列语句可以将listBox1控件中所有被选中的项复制到listBox2控件中:for(inti=0;ilistBox1.SelectedIndices.Count;i+)listBox2.Items.Add(listBox1.SelectedItemsi.ToString();,6.3.3列表类控件,6.3常用的控件,(2)重要方法Items.Add()方法该方法用于一个字符串添加到ListBox控件中。例如:listBox1.Items.Add(中国);SetSelected()方法该方法用于将指定的项设置为选中状态或为未被选中状态。例如:listBox1.SetSelected(1,true);/将索引号为1的项设置为选中状态listBox1.SetSelected(3,false);/将索引号为3的项设置为未被选中状态,6.3.3列表类控件,6.3常用的控件,IndexFromPoint()方法利用该方法可以获取ListBox控件中鼠标所指向的项的索引号,从而可以方便地读取ListBox控件中的任意一项。该方法通常是在有关鼠标事件处理函数中调用,如:privatevoidlistBox1_MouseDown(objectsender,MouseEventArgse)intindex=listBox1.IndexFromPoint(e.X,e.Y);/获取索引/其他处理代码,6.3.3列表类控件,6.3常用的控件,Items.RemoveAt()方法该方法根据给定的索引号从ListBox控件中删除相应的项。例如,下面语句是将索引为2的项从listBox1控件中删除:listBox1.Items.RemoveAt(2);Clear()方法该方法用于清空ListBox控件中的内容。ClearSelected()方法该方法用于清空被选择的项,使得所有项都变为未被选中的状态。,6.3.3列表类控件,6.3常用的控件,(3)重要事件SelectedIndexChanged事件当焦点在ListBox控件中的项之间发生变动或点击ListBox控件时都会触发该事件。相应的处理函数如下:privatevoidlistBox1_SelectedIndexChanged(objectsender,EventArgse)/事件处理代码,6.3.3列表类控件,6.3常用的控件,2CheckedListBox控件CheckedListBox控件和ListBox控件的用法基本相同,不同的是,前者的每项旁边增加了一个复选框,表示该项是否被选中。因此,CheckedListBox控件增加了一些支持访问这种复选框的属性等。例如,CheckedListBox控件的CheckedItems.Count属性值表示一共被选中的复选框的个数,CheckedItemsi属性则返回索引为i的在复选框中被选中的项。,6.3.3列表类控件,6.3常用的控件,3ComboBox控件(组合框)ComboBox控件和ListBox控件也比较相似,不同的是,前者是将其包含的项“隐藏”起来(后者是全部显示),通过点击下拉按钮来选择所需的项(只能选一项),被选中的项将在文本框中显示出来,6.3.3列表类控件,6.3常用的控件,4ListView控件(1)重要属性Items.Count属性和SelectedItems.Count属性属性Items.Count返回ListView控件所包含的项的总数;属性SelectedItems.Count则返回ListView控件中已被选中的项的个数。Itemsi属性该属性返回ListView控件中索引为i的项,如果要返回项的标题,则用Itemsi.Text属性。,例如,如果要访问ListView控件中所有的项,则可以用下列代码实现:for(inti=0;ilistView1.Items.Count;i+)strings=listView1.Itemsi.Text;,6.3.3列表类控件,6.3常用的控件,SelectedItemsi属性该属性返回在被选中的项中索引为i的项。它一般与SelectedItems.Count属性搭配使用。,例如,下列代码的作用是在ListBox1控件中列出listView1控件中所有已被选中的项(的Text值)for(inti=0;ilistView1.SelectedItems.Count;i+)strings=listView1.SelectedItemsi.Text+-已-被选中;/项被选中listBox1.Items.Add(s);,6.3.3列表类控件,6.3常用的控件,MultiSelect属性当该属性被设置为true(默认值)时,允许在ListView控件中选择多项。选择方法是,按【Ctrl】的同时用鼠标点击要选的项。CheckBoxes属性当该属性被设置为true(默认值为false)时,在每项的前面会增加一个复选框。Itemsi.Checked属性如果索引为i的项的复选框被选中,则该属性返回true;反之如果令Itemsi.Checked的值为true,则索引为i的项的复选框被选中。,6.3.3列表类控件,6.3常用的控件,(2)重要方法Items.Add()方法该方法用于在ListView控件中添加项,它有多个重载版本,常用有两种:ListViewItemItems.Add(stringtext)ListViewItemItems.Add(stringtext,intimageIndex)其中,参数text用于设置项的Text属性值,imageIndex用于设置项的图标。Items.Clear()方法该方法用于清空ListView控件中所有的项。Itemsi.Remove()方法该方法用于删除索引为i的项。,6.3.3列表类控件,6.3常用的控件,(3)重要事件Click事件只要点击ListView控件中的任意一项,都会触发该事件。SelectedIndexChanged事件ListView控件中任意一项的选中状态发生变化时都会触发该事件,但项前的复选框的选中状态发生变化时不会触发该事件。ItemCheck和ItemChecked事件这两个事件十分相似:项的复选框的状态发生改变时都会触发该这两个事件。其区别主要体现在,它们的事件处理函数的参数e返回的值不一样。其中,对于ItemCheck事件,e.Item返回的是复选框状态被改变的项;对于ItemChecked事件,e.CurrentValue返回的是在状态改变之前项的复选框的值(Checked或Unchecked),e.NewValue返回的是在状态改变之后项的复选框的值。,6.3.3列表类控件,6.3常用的控件,5TreeView控件TreeView控件是以树状的形式显示其包含的项。例如,Windows操作系统中的资源管理器就是以树状的形式展示目录。(1)TreeView控件的重要属性和方法ImageList属性该属性用于加载ImageList控件对象,以为TreeView控件中的节点提供图标。Nodes.Count属性该属性返回TreeView控件中根节点的数量。Nodesi属性该属性返回TreeView控件中索引为i的根节点。Parent属性该属性返回TreeView控件所在的容器对象,如Form1等。,6.3.3列表类控件,6.3常用的控件,TopNode属性该属性返回TreeView控件中的第一个根节点(索引为0的根节点)。如果TreeView控件中没有节点,则返回null。CheckBoxes属性当该属性的值被设置为true时,在每个节点前面都增加一个复选框。Nodes.Clear()方法该方法用于清空TreeView控件中的所有节点,如:treeView1.Nodes.Clear();,6.3.3列表类控件,6.3常用的控件,(2)TreeNode类的重要方法和属性TreeNode类的构造函数TreeView控件中的节点实际上是由TreeNode类的对象构成。TreeNode类提供了重载构造函数的多种版本,用于创建TreeNode类的对象(节点)。其中,常用的包括两种:TreeNodeTreeNode(stringtext)TreeNodeTreeNode(stringtext,intimageIndex,intselectedImageIndex)其中,参数text用于设置节点的名称(Text属性值);imageIndex和selectedImageIndex分别用于设置节点未被选中和已被选中时要显示的图标的索引(此索引与图标的对应关系在ImageList控件设置),如果只能这两个参数,则默认均使用索引为0的图标。,6.3.3列表类控件,6.3常用的控件,(2)TreeNode类的重要方法和属性TreeNode类的构造函数TreeView控件中的节点实际上是由TreeNode类的对象构成。TreeNode类提供了重载构造函数的多种版本,用于创建TreeNode类的对象(节点)。其中,常用的包括两种:TreeNodeTreeNode(stringtext)TreeNodeTreeNode(stringtext,intimageIndex,intselectedImageIndex),例如,下面代码将创建名为“中国大学”的节点,并添加为控件treeView1的一个根节点:TreeNodenode=newTreeNode(中国大学);treeView1.Nodes.Add(node);,6.3.3列表类控件,6.3常用的控件,Nodes.Add()方法该方法用于为当前节点增加子节点。,例如:TreeNodenode,parentnode;node=newTreeNode(中国大学);treeView1.Nodes.Add(node);/在treeView1控件中增加根节点“中国大学”parentnode=node;node=newTreeNode(清华大学);parentnode.Nodes.Add(node);/为“中国大学”增加子节点“清华大学”node=newTreeNode(北京大学);parentnode.Nodes.Add(node);/为“中国大学”增加子节点“北京大学,6.3.3列表类控件,6.3常用的控件,Expand()和ExpandAll()方法这两个方法都是用于展开节点,不同的是,Expand()方法用于展开当前节点的所有子节点,而不展开孙子节点(即子节点以下的节点不展开);而ExpandAll()方法则展开所有以当前节点为根节点的所有节点(包括子节点和孙子节点)。Collapse()方法该方法则收缩以当前节点为根节点的子树(变为一个节点)。Remove()方法该方法用于删除当前节点及其子节点和孙子节点。GetNodeCount(boolincludeSubTree)方法该方法返回子节点和孙子节点的个数,其中,如果参数includeSubTree的值为true则返回当前节点的子节点以及所有孙子节点的数量;如果为false则仅返回子节点的数量。,6.3.3列表类控件,6.3常用的控件,下面介绍TreeNode类的常用属性。Text属性该属性用于设置或获取节点所显示的文本。Nodesi属性该属性返回当前节点的子节点中索引为i的子节点。Checked属性当节点前面的复选框被选中时,该属性值为true;反之,当令该属性值为true时,相应节点前面的复选框处于被选中状态(打勾)。FullPath属性该属性返回从根节点到当前节点的路径。Parent属性该属性返回父节点。,6.3.3列表类控件,6.3常用的控件,ImageIndex和SelectedImageIndex属性如果ImageIndex属性的值被设置为n,则表示使用索引为n的图标作为该节点在未被选中时显示的图标;如果SelectedImageIndex属性的值被设置为m,则表示使用索引为m的图标作为该节点在已被选中时显示的图标。,6.3.3列表类控件,6.3常用的控件,(3)TreeView控件的重要事件AfterSelect和BeforeCheck事件该事件是在选中节点后发生,但点击节点前面的“+”或“-”时不会发生。BeforeCheck事件则是在选中节点前发生。Click事件点击TreeView控件中的任何内容都会触发该事件,包括点击节点前面的“+”或“-”。AfterExpand和BeforeExpand事件AfterExpand和BeforeExpand事件分别是在展开节点后和展开节点前发生。AfterCollapse和BeforeCollapse事件AfterCollapse和BeforeCollapse事件分别是在收缩节点后和收缩节点前发生。AfterCheck和BeforeCheck事件分别是在节点前面的复选框的状态发生改变后和改变前发生。,6.3.3列表类控件,6.3常用的控件,6DateTimePicker控件DateTimePicker控件可以通过鼠标选择指定的日期。默认情况下,DateTimePicker控件以文本框形式出现,并带有一个下拉箭头。用户单击下拉箭头时,会出现一个日历窗口,用户可从中选择日期。DateTimePicker控件常用的事件是ValueChanged事件,当用户在运行时点击该控件会产生该事件。因此,通常在此事件的处理函数中编写的处理代码。当用户从日历窗口选择一个日期后,获得的日期值将保存在属性Value中。因此,一般要通过该属性来获取相应的日期成份,如:DateTimedt=dateTimePicker1.Value;,6.4.1打开和保存文件对话框,6.4常用的对话框,1.打开文件对话框打开文件对话框(OpenFileDialog)用于显示让用户定位文件和选择文件的对话框,其作用是方便、快速地让用户找到文件的路径。,6.4.1打开和保存文件对话框,6.4常用的对话框,1.打开文件对话框打开文件对话框(OpenFileDialog)用于显示让用户定位文件和选择文件的对话框,其作用是方便、快速地让用户找到文件的路径。,ShowDialog()方法当调用该方法时会弹出如上图所示的对话框。当点击对话框中的【打开】按钮时该函数返回DialogResult.OK;当点击【取消】按钮时则该函数返回DialogResult.Cancel。因此,据此可以判断OpenFileDialog对话框是通过点击【打开】按钮关闭还是通过点击【取消】按钮关闭。实际上,该方法经常采用如下的调用方式:if(openFileDialog1.ShowDialog()=DialogResult.OK)/相关代码,6.4.1打开和保存文件对话框,6.4常用的对话框,InitialDirectory属性该属性用于设定OpenFileDialog对话框要显示的初始目录。Filter属性该属性用于设置对话框中过滤文件字符串,即设置的字符串决定了哪些类型的文件能在对话框中可见。例如:openFileDialog1.Filter=txt文件(*.txt)|*.txt|rtf文件(*.rtf)|*.rtf|Allfiles(*.*)|*.*;,6.4.1打开和保存文件对话框,6.4常用的对话框,FilterIndex属性该属性用于设定显示的字符串的索引。FileName属性该属性返回被选中文件的绝对路径,这也是OpenFileDialog对话框的最终输出结果。Title属性该属性用于设置对话框的标题。Multiselect属性该属性如果被设置为true(默认值为false)时,允许在OpenFileDialog对话框中选择多个文件(通过按Ctrl键来选择多个文件)。,6.4.1打开和保存文件对话框,6.4常用的对话框,SafeFileNames属性该属性的值为字符串数组类型(string)。当Multiselect属性被设置为true时,可选择多个文件,而被选中的文件的文件名则保存在此属性中。例如,可以通过下列方式来访问其中的文件名:for(inti=0;iopenFileDialog1.SafeFileNames.Length;i+)listBox1.Items.Add(openFileDialog1.SafeFileNamesi);,6.4.1打开和保存文件对话框,6.4常用的对话框,以下打开文件对话框常用的、相对完整的代码:openFileDialog1.InitialDirectory=C:;openFileDialog1.Filter=txt文件(*.txt)|*.txt|rtf文件(*.rtf)|*.rtf|Allfiles(*.*)|*.*;openFileDialog1.FilterIndex=3;openFileDialog1.Title=我的打开文件对话框;if(openFileDialog1.ShowDialog()=DialogResult.OK)intpos=openFileDialog1.FileName.LastIndexOf();/获取文件的路径(不含文件名)stringdirpath=openFileDialog1.FileName.Substring(0,pos);stringfilename=openFileDialog1.FileName.Substring(pos+1);/获取文件名/其他处理代码,6.4.1打开和保存文件对话框,6.4常用的对话框,2.保存文件对话框保存文件对话框(SaveFileDialog)让用户为保存文件而定位到相应目录下的对话框,其作用是方便、快速地让用户找到要保存文件的路径。SaveFileDialog对话框也有ShowDialog()方法以及InitialDirectory、Filter、FilterIndex、FileName、Title、Multiselect、SafeFileNames等属性,其意义与OpenFileDialog对话框的相同。,6.4.1打开和保存文件对话框,6.4常用的对话框,两个重要的属性:AddExtension属性当该属性值被设置为true(默认值)时,如果用户在“文件名”组合框中没有指定文件的扩展名,则系统会自动添加由“文件类型”组合框选中的扩展名(除非选中的是.*类型文件)。OverwritePrompt属性当该属性值被设置为true(默认值)时,如果在“文件名”组合框中设置的文件名与当前目录下的某一个文件名相同,则系统会给出一个有关文件已重名的提示框,让用户确认是否要使用重名的文件名。,6.4.2字体对话框和颜色对话框,6.4常用的对话框,字体对话框的主要方法是ShowDialog()方法,该方法与打开文件对话框和保存文件对话框中的ShowDialog()方法一样:if(fontDialog1.ShowDialog()=DialogResult.OK)richTextBox1.SelectionFont=fontDialog1.Font;当然,也可以提取FontDialog对话框中设置的各种“成分”:textBox1.Text=fontDialog1.Font.Bold.ToString();textBox1.Text=fontDialog1.Font.Name;textBox1.Text=fontDialog1.Font.Style.ToString();textBox1.Text=fontDialog1.Font.Size.ToString();textBox1.Text=fontDialog1.Font.GdiCharSet.ToString();,6.4.2字体对话框和颜色对话框,6.4常用的对话框,颜色对话框(ColorDialog)的主要方法和属性分别是ShowDialog()方法和Color属性。其使用方法与字体对话框的相似。例如:if(colorDialog1.ShowDialog()=DialogResult.OK)richTextBox1.SelectionColor=colorDialog1.Color;,6.4.3文件夹浏览对话框,6.4常用的对话框,文件夹浏览对话框(FolderBrowserDialog)用于方便、快速地定位到相应的文件夹,并获取该文件夹的绝对路径。其主要方法和属性如下:ShowDialog()方法该方法与前面介绍的一样,执行下列语句会弹出文件夹浏览对话框:if(folderBrowserDialog1.ShowDialog()=DialogResult.OK)/相应处理代码,6.4.3文件夹浏览对话框,6.4常用的对话框,ShowNewFolderButton属性当该属性的值被设置为true(默认值)时,在对话框的左下角显示【新建文件夹】按钮。利用该按钮可以在选定的文件夹下创建子文件夹。Description属性该属性的值为string类型,用于描述对话框。例如:folderBrowserDialog1.Description=文件夹浏览器;RootFolder属性该属性用于指定对话框要浏览的根文件夹,例如,下面语句指示对话框以逻辑桌面为浏览的根文件夹:folderBrowserDialog1.RootFolder=Environment.SpecialFolder.Desktop;/默认设置SelectedPath属性当在对话框中选择相应的文件夹并单击【确定】按钮(ShowDialog()方法返回DialogResult.OK)时,该属性将返回被选中文件夹的绝对路径。,6.5消息对话框,6.5消息对话框,消息对话框一般用于在程序运行过程中显示相关提示信息,以增加程序与用户的交互能力。C#提供了实现消息对话框功能的多种途径。实际上,上面介绍的打开和保存文件对话框等都属于消息对话框,本节进一步介绍消息对话框的分类以及一些“小”的对话框。,6.5.1模式对话框与非模式对话框,对话框可以分为模式对话框与非模式对话框。模式对话框:当模式对话框被打开时同程序中的其他对话框和窗体都不能“动”,即模式对话框处于活动状态时程序就不能切换到其他对话框和窗体中,除非关闭它。非模式对话框:处于活动状态时程序可以切换到其他对话框和窗体中。,6.5消息对话框,6.5.1模式对话框与非模式对话框,From类提供的ShowDialog()方法和Show()方法分别用于实现模式对话框和非模式对话框的显示。例如:Formfrm1=newForm();Frm1.ShowDialog();/打开模式对话框Formfrm2=newForm();Frm2.Show();/打开非模式对话框,6.5消息对话框,6.5.1模式对话框与非模式对话框,有一个问题是:如何将打开的对话框中的相关值传递到打开的它的窗体中?【例6.5】开发一个如下图所示的自定义模式对话框,要求当单击【是】或【否】按钮时能够返回相应值。,6.5消息对话框,6.5.1模式对话框与非模式对话框,开发步骤如下:(1)创建窗体应用程序MyDialog,会自动形成一个名为Form1的窗体。选择菜单“项目”|“添加组件”命令,在打开的“添加新项”对话框中选择“Windows窗体”项并单击【添加】按钮,便生成另一个名为Form2的窗体。(2)在窗体Form2的设计界面中,添加一个Label控件和两个Button控件,并设置属性。(3)在窗体Form1中添加一个TextBox控件和一个Button控件,并作适当设计,结果如下图所示。,6.5消息对话框,6.5.1模式对话框与非模式对话框,(4)对两个窗体中的相关控件编写代码,关键代码如下:/文件Form1.cs中的代码privatevoidbutton1_Click
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!