使用windows窗体和控件.ppt
在本章,你将学到:使用Windows窗体使用Windows窗体控件 使用剪贴板执行拖放操作,目标,Windows Forms(窗体)表示在应用程序中显示的任何窗口。窗体用于接受用户的输入并显示录入的信息。当为Windows应用程序创建一个新的项目时,将一个窗体自动添加到项目中。该窗体的默认名为Form1.cs。Windows中的每个窗体都是从 命名空间的Form类派生而来的类。,Windows Forms介绍,Windows Forms的属性用来决定窗体在运行时的外观。,Windows Forms属性,Size 属性用于指定窗体的高度和宽度。,Font 属性用于为窗体的各种控件上显示的文本指定字体的样式、尺寸和类型。,Text属性用于指定在窗体的标题栏中显示的标题。,Backcolor 属性用来指定窗体的背景颜色。,StartPosition 属性用于指定屏幕上窗体的位置。,Windows Forms方法允许您执行各种任务,如打开、激活和关闭窗体。方法有:,Windows Forms方法,Form1 frmObj=new Form1();frmObj.show();frmObj.hide();frmObj.Activate();frmObj.Close();,/用来显示窗体。,Windows Forms方法允许您执行各种任务,如打开、激活和关闭窗体。方法有:,Windows Forms方法(续),Form1 frmObj=new Form1();frmObj.show();frmObj.hide();frmObj.Activate();frmObj.Close();,/用来隐蔽窗体。,Windows Forms方法允许您执行各种任务,如打开、激活和关闭窗体。方法有:,Windows Forms方法(续),Form1 frmObj=new Form1();frmObj.show();frmObj.hide();frmObj.Activate();frmObj.Close();,/用来激活一个窗体并在它上面设置焦点。,Windows Forms方法(续),Form1 frmObj=new Form1();frmObj.show();frmObj.hide();frmObj.Activate();frmObj.Close();,/用来关闭窗体。,Windows Forms方法允许您执行各种任务,如打开、激活和关闭窗体。方法有:,当用户执行操作时会产生事件,如单击鼠标或按下键。可以在一个特殊的称为事件处理程序(event handler)的方法内指定出现某事件时将要执行的操作。在用户需要显式调用方法时,事件处理器方法中的代码在事件产生时同时执行。窗体中使用的常见事件有:ClickFormClosedDeactivateLoadMouseMove,Windows Forms 事件,控件是用于接受用户输入或在窗体上显示某些信息的组件。每个控件都有它自己的一套属性、方法和事件,以便使它适合于完成某种特定的任务。可以在设计期间通过使用Properties窗口来设置控件的属性。还可以在运行时通过编写代码来设置控件的属性。,使用Windows窗体控件,让我们识别窗体的各种控件。,使用Windows窗体控件(续),标签控件,文本框控件,组合框控件,分组框控件,复选框控件,按钮控件,单选按钮控件,课间思考,下面哪种控件充当图像的存储库?1.PictureBox2.ListView3.ImageList4.ListBox,答案:3.ImageList,与各种控件相关的事件可以分为如下几类:键盘事件鼠标事件控件特有的事件,控件事件,例如,KeyDown、KeyUp、KeyPress,例如,MouseUP、MouseDown、MouseMove,例如,Resized、VisibleChanged,在运行时加载控件称为动态加载(dynamic loading)控件。每个控件都是从 类派生得到的一个类。为了在运行时添加控件:创建将要添加的控件的一个实例。设置该控件的属性。将新控件添加到父控件的Controls集合中。让我们看看如何在运行时添加控件。,在Windows窗体中动态加载空间,示例,要动态加载一个文本控件需要编写如下代码:private void button1_Click(object sender,EventArgs e)TextBox t1=new TextBox();this.Controls.Add(t1);,在Windows窗体中动态加载空间(续),课间思考,写出在向窗体动态添加一个控件时需要采取哪些步骤?,答案:1.创建将要添加的控件的一个实例2.设置控件的属性3.将控件添加到父控件的Controls集合中,如果在运行时将一个控件添加到窗体,那么在运行时创建事件处理程序是必需的。当在运行时创建一个事件处理程序时,首先必须创建一个方法,该方法具有和希望处理的事件相同的参数。然后必须将该事件与指定事件处理程序的代码联系起来。,在运行时创建事件处理程序,演示:使用Windows窗体控件进行操作,问题描述:创建一个应用程序通过启动屏幕来接受用户名和口令。应用程序应该检查登录名是否为“sa”并且口令是“callcenter”。应该提供用户三次登录尝试,在三次不成功的登录尝试后,应用程序应该显示一个错误消息并关闭屏幕。,演示:使用Windows窗体控件进行操作(续),解决方案:为了创建登录窗体(Login Form),需要执行如下的任务:1.创建一个新的VC#应用程序2.设计应用程序窗体3.添加验证用户的输入的代码4.执行应用程序并检验输出,使用剪贴板执行拖放操作,拖放功能允许在一个应用程序中将对象从一个位置拖动到另一个位置。(拖放,剪切板),拖放操作事件,为了执行拖放操作,Windows Forms 应用程序需要处理如下事件:ItemDragDragEnterDragOverDragDropDragLeaveGiveFeedback,为了执行拖放操作,用户必须执行如下的一系列步骤:1.通过调用控件的MouseDown或 ItemDrag 事件的DoDragDrop()方法来启动拖放操作。2.处理事件以便向用户提供有关拖放操作的信息。这些事件包括DragEnter、DragLeave和GiveFeedback。3.为了允许目标控件接受放置的数据,将它的AllowDrop 属性设为true。4.在目标控件的DragDrop 事件中编写代码来指定如何处理放置的数据。,拖放操作阶段,剪贴板充当任何在Windows操作系统上运行的应用程序的临时存储区。通过使用类提供的方法,可以将剪贴板功能集成到VC#应用程序中。有三种操作:将数据存储到剪贴板中识别剪贴板上的数据类型检索剪贴板中的数据,在Windows窗体应用程序中提供剪贴板支持,要将数据存储到剪贴板中,使用如 SetAudio(),SetData(),SetImage()方法,要识别剪贴板上的数据类型,使用如ContainsAudio(),ContainsData(),ContainsImage()方法,要检索剪贴板中的数据,使用如 GetAudioStream(),GetData(),GetImage()方法,课间思考,当用户将一个对象拖动到TreeView或ListView控件中时会出现哪个事件?1.DragEnter 事件2.DragOver事件3.GiveFeedback事件4.ItemDrag事件,答案4.ItemDrag 事件,在应用程序之间执行拖放操作,如下代码有助于用户在WordPad文件中键入文本框并在其窗体上的文本框控件中拖此文本框:private void textBox1_DragEnter(object sender,DragEventArgs e)if(e.Data.GetDataPresent(DataFormats.Text)e.Effect=DragDropEffects.Copy;else e.Effect=DragDropEffects.None;,private void textBox1_DragDrop(object sender,DragEventArgs e)textBox1.Text=e.Data.GetData(DataFormats.Text).ToString();,Drag to the Form,在应用程序之间执行拖放操作(续),演示:执行拖放操作,问题描述:创建一个利用VC#提供的拖放特性的应用程序。使用TextBox和TreeView控件作为数据源,并使用ListBox控件作为目标控件。如何创建这个应用程序?,演示:执行拖放操作(续),解决方案:为了创建展示拖放操作的应用程序,需要执行如下的任务:1.创建一个新的VC#应用程序。2.设计应用程序窗体。3.添加执行拖放操作的代码。4.执行应用程序并验证输出。,在本章中,你已经学到:使用窗体来接受用户输入并将信息重新呈现给用户。窗体具有很多属性、方法和事件。执行诸如单击鼠标或按下键盘中的某个键时会产生一个事件。当触发一个事件时,将执行事件处理程序中的代码。可以将控件添加到窗体中来接受用户的输入或在窗体上显示某些信息。一些常用的控件是TextBox、Label、CheckBox、RadioButton和Button控件。可以在设计时或运行时添加控件。拖放功能允许用户在窗体上将一个对象从一个位置移动到另一个位置。,小结,需要处理多种事件以便在应用程序中支持拖放操作,这些事件包括:ItemDrag 事件DragEnter 事件DragOver 事件DragDrop 事件DragLeave 事件GiveFeedback 事件Clipboard是数据的临时存储区。通过使用类提供的方法可以将Clipboard功能集成到应用程序中。,小结(续),