《Visual C# NET程序设计基础》课件005_第1页
《Visual C# NET程序设计基础》课件005_第2页
《Visual C# NET程序设计基础》课件005_第3页
《Visual C# NET程序设计基础》课件005_第4页
《Visual C# NET程序设计基础》课件005_第5页
已阅读5页,还剩158页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章WinForms基础知识5.1Windows窗体介绍

5.2Windows窗体中常用的控件

5.3C#中的消息框 5.4实例2:创建一个使用控件的应用

5.5窗体容器简介 5.6实例3:创建多窗体的应用程序

5.7综合案例:学生信息管理系统界面制作本章小结

练习与作业

上机部分(五)

学习目标●使用C# 创建Windows应用程序●学会使用WinForms中的常用控件●学会使用消息框●学会创建多窗体的Windows程序5.1Windows窗体介绍每个Windows应用程序都有两个部分:用户界面和业务逻辑。用户界面是用户和应用程序进行交互的屏幕。业务逻辑是一组用来执行程序的逻辑代码。到目前为止,我们已经创建了控制台应用程序,这些应用程序的共同特点是,没有一个图形化的界面。为了给应用程序添加用户界面的功能,Microsoft推出了Windows窗体。VisualStudio.NET的IDE,就是用于开发Windows窗体的工具,它为我们提供了各种现成的界面组件。Windows窗体也称为WinForms,它并不具备创建Windows应用程序所需的全部功能,只具有创建用户界面的功能。要创建程序的业务逻辑,使各种组件按照用户要求进行工作,还需要编写C# 代码。下面将学习如何利用C#语言并通过VisualStudio.NET 2005开发一个简单的Windows窗体程序。5.1.1用C# 创建Windows应用程序在本节中,将使用 .NET开发环境,创建一个新的Windows窗体程序,操作步骤如下。

1.创建项目创建一个Windows窗体程序的步骤如下:

(1)启动Visual

Studio.NET 2005。(2)选择“File”菜单上的“新建”,然后单击“项目…”,弹出如图5-1所示的对话框。

(3)在“项目类型”窗格中,单击“VisulaC#Windows”;在“模板”窗格中,单击“Windows应用程序”。然后在“名称”文本框中输入项目的名称,单击【确定】按钮完成窗体的创建,进入窗体设计器开始设计用户界面,如图5-2所示。

2.设置窗体属性在窗体设计器中选中窗体,然后在属性窗口中对窗体属性做如下更改:

(1)“Text”属性,表示窗口的标题,输入“第一个Windows程序”。(2)“Name”属性,表示窗体的名称,用于在代码中引用窗体,输入“Demo”。

(3)“BackgroundImage”属性,表示窗体的背景图片,单击该属性右侧的按钮,弹出如图5-3所示的对话框。单击【导入…】按钮,选择某张图片,再单击【确定】按钮,完成背景图片的设置。

(4)“BackgroundImageLayout”属性,表示窗体背景图片的显示方式,在下拉列表框中选择“Stretch”,以拉伸的方式显示图片。

(5)“FormBorderStyle”属性,表示窗体的边框样式,在下拉列表框中选择“FixedDialog”,使窗体不能通过拖动边框来改变大小。图5-1“新建项目”对话框图5-2创建窗体图5-3“选择资源”对话框3.设置控件属性

(1)单击IDE环境中左边的工具箱【AllWindowsForms】按钮,在该栏中单击命令按钮,在窗体上画出一个按钮,如图5-4所示。

(2)将该按钮的【Text】设置为【SayIt】。

(3)双击按钮,进入代码编辑器,在“Click”事件中插入下列代码:

MessageBox.Show("Iloveyou");(4)保存文件。

4.在IDE中运行项目在VS.NET2005IDE中运行项目的步骤如下:

(1)单击工具栏上的【启动】按钮,也可以按F5键来运行项目,运行效果如图5-5所示。

(2)关闭空白窗体,返回编程环境。图5-4界面设计图5-5运行效果5.生成项目当编译项目或者解决方案时,会根据项目的不同设置,在项目文件夹的Debug\bin子文件夹或Release\bin子文件夹中生成可执行文件( .exe)。

6.查看文件在解决方案资源管理器“SolutionExplorer”中查看文件的步骤为:

(1)如果还未打开“SolutionExplorer”,则单击“View”菜单上的“SolutionExplorer”。

(2)展开其中的节点来查看文件。

7.保存和关闭项目关闭项目并退出VisualStudio.NET2005的步骤为:

(1)单击“File”菜单上的“Exit”。

(2)如果提示是否保存更改,单击【确定】。5.2Windows窗体中常用的控件窗体对象可以包含许多可视或不可视的页面组件。可视的页面组件统称为“控件”——Control。Control类是可以在Windows窗体中使用的所有控件的基类。Label、Button、TextBox等控件都是从这个基类派生而来的。图5-6列出了在VS2005工具栏中的Windows窗体控件。有些属性是绝大多数控件所共有的,表5-1列出了这些通用属性的一部分。图5-6控件工具箱表5-1控件的通用属性

读取和设置控件的这些属性,请参考下面的代码段:

textBox1.Text="hello";this.textBox1.Text="hello";

在代码段中,两条指令都执行相同的任务:在文本框中显示字符串。两条语句的区别在于,第二条语句使用了this关键字。this表示当前活动的窗体。借助this关键字,可以访问这个窗体的所有属性、方法和事件,也可以利用智能提示功能快速地访问窗体中的控件。5.2.1标签

Label标签用于显示用户无法编辑的文本,通常用于标示输入区或窗体中显示的信息。为标签的Text属性赋值时,可以使用回车和换行的组合强制换行。向窗体添加该标签时,会创建一个Label对象。Label控件的图标为。表5-2列出了Label控件支持的一些属性及其说明。虽然无法在运行时由用户直接输入文本,我们仍然可以通过代码实现在程序运行时改变Label控件中的文本。例如可以在Button控件的Click事件中实现这一功能。代码如下:

privatevoidbutton1_Click(objectsender,System.EventArgse) { this.label1.Text="单击按钮时出现"; }表5-2Label控件的常见属性5.2.2文本框

TextBox控件用于获取用户输入或者向用户显示文本。默认情况下,最多可在一个文本框中输入2048个字符。

TextBox可显示多行,对文本换行使其符合控件的大小及添加基本的格式设置。TextBox控件为在其中显示或输入的文本提供单个格式化样式。要显示多种类型的带格式文本,可使用RichTextBox控件。向窗体添加TextBox控件时,会创建一个TextBox对象。TextBox控件的图标为。表5-3列出了TextBox控件支持的一些属性、方法和事件及其功能描述。表5-3TextBox控件的常见属性、方法和事件5.2.3按钮

Button控件提供了使用户能够与应用程序交互的最简便的方法。用户可以通过单击按钮来执行程序代码。虽然通常使用按钮的方式是单击,但是也可以定义允许用户操作的访问键。访问键用Text属性指定,在用作访问键的字母前加一个“&”字符。该字符不显示在按钮上,而用作访问键的字母下加了下划线。向窗体添加Button控件时,会创建一个Button对象。Button按钮的图标为。表5-4列出了Button控件支持的一些属性、方法和事件及其功能描述。表5-4Button控件的常见属性、方法和事件5.2.4实例1:制作登录界面下面将结合上面已讲的三个控件,创建一个简易的登录窗体,步骤如下:

(1)首先创建一个WinForm程序LoginApp,对窗体Form1的设计界面如图5-7所示,相应控件的属性设置如表5-5所示.图5-7设计界面表5-5控件属性(2)然后双击Button,进入Click事件并输入以下代码:

privatevoidbtnLogin_Click(objectsender,System.EventArgse) { if(txtName.Text=="admin"&&txtPwd.Text=="123") lblResult.Text="欢迎登录!"; else { lblResult.Text="用户名或密码有误"; txtName.Focus(); txtName.SelectAll(); } }(3)最终程序的运行结果如图5-8所示。图5-8运行结果5.2.5列表框

ListBox控件显示一个较长的选项列表,用户可以从该列表中选择自己的选项。列表中的每个元素称为项。如果项的总数超出可以显示的项数,则自动向ListBox控件中添加滚动条。ListBox控件在工具栏中的图标是。表5-6列出了ListBox控件支持的一些属性和事件及其功能描述。

SelectedItem属性类似于SelectedIndex,但它返回项的本身,通常是字符串值。Items.Count属性表示列表中的项数,并且Items.Count的值总是比SelectedIndex的最大可能值大1,因为SelectedIndex是从0开始的。若要在ListBox中添加或删除项,可使用Items.Add、Items.Insert、Items.Clear或Items.Remove方法,或者在设计时使用Items属性向其中添加项。表5-6ListBox控件的常见属性、方法和事件【例5-1】

下面将创建一个ListBox例子,在窗体上放置两个listBox控件,设计界面如图5-9所示。程序代码如下所示:

privatevoidForm1_Load(objectsender,EventArgse){listBox1.Items.Add("性别");listBox1.Items.Add("职业");}privatevoidlistBox1_MouseClick(objectsender,MouseEventArgse){listBox2.Items.Clear();if(listBox1.SelectedItem.ToString()=="性别"){listBox2.Items.Add("男");listBox2.Items.Add("女");}elseif(listBox1.SelectedItem.ToString()=="职业"){listBox2.Items.Add("工人");listBox2.Items.Add("农民");listBox2.Items.Add("学生");listBox2.Items.Add("知识分子");}}privatevoidlistBox2_Click(objectsender,EventArgse){ MessageBox.Show("您的职业是"+listBox2.SelectedItem.ToString());}图5-9设计界面

在上面的代码中,有三种不同的事件。其中Form1_Load事件在窗体装载时运行,因此常常把初始化的信息放在这里。当单击listBox1控件时,引发listBox1_MouseClick事件,此时判断用户单击listBox1的选项,动态地在listBox2中载入相应的选项。当鼠标点在listBox2上时,直接将用户的选择显示在一个消息框中。程序运行的结果如图5-10所示。

CheckedListBox控件对ListBox控件进行了扩展。该控件在列表中的项旁边提供了一个复选框,这样,用户可同时勾选多个列表项。效果如图5-11所示。CheckedListBox控件在工具栏中的图标是。表5-7列出了CheckedListBox控件支持的一些属性、方法和事件及其功能描述。图5-10程序运行结果图5-11CheckedListBox显示效果表5-7CheckedListBox控件的常见属性、方法和事件5.2.6组合框

ComboBox控件组合了TextBox控件和ListBox控件的功能。使用此控件,用户可以通过在组合框中键入文本来选择项,也可以从列表中选择项。ComboBox类是从类ListControl派生而来的,它支持ListBox控件的几乎所有属性。向窗体添加ComboBox控件时,会创建一个ComboBox对象。ComboBox控件在工具栏中的图标是。表5-8列出了ListBox控件支持的一些属性、方法和事件及其功能描述。

【例5-2】下面将创建一个ComboBox案例,在窗体上放置一个ComboBox控件,设计界面如图5-12所示。表5-8ComboBox控件的常见属性、方法和事件图5-12设计界面

程序代码如下所示:

privatevoidForm1_Load(objectsender,EventArgse){comboBox1.DropDownStyle=ComboBoxStyle.DropDownList;comboBox1.Items.Add("工人");comboBox1.Items.Add("农民");comboBox1.Items.Add("学生");comboBox1.Items.Add("知识分子");}privatevoidcomboBox1_SelectedIndexChanged(objectsender,EventArgse){MessageBox.Show("您的职业是"+comboBox1.SelectedItem.ToString());}

注意,在Form1_Load事件中初始化代码时将comboBox1的DropDownStyle属性设置为DropDownList,这样用户只能选择项目而不能输入文字了。程序运行的结果如图5-13所示。图5-13例5-2运行结果5.3C#中的消息框消息框是一个预定义的对话框,用于向用户显示信息或询问一些简单的信息。图5-13的弹出窗口就是一个消息框。消息框用类MessageBox表示,它位于命名空间System.Windows.Forms中。如要创建消息框,可使用下面的语法来调用MessageBox函数:

MessageBox.Show(//参数设置);

创建消息框的步骤如下:

(1)找到消息框代码要添加的位置。例如,如果窗体上有button1按钮,则可将代码添加在button1_Click事件处理程序中。

(2)在button1_Click事件中添加代码:MessageBox.Show()。

(3)指定消息框选项。MessageBox类的Show方法的参数列表有21种形式。输入第(2)步中的代码后,将自动显示一个提示窗口来显示其中一种形式所需要输入的参数。使用键盘上的向上和向下键查看这21种形式,如图5-14所示。

(4)依次输入需要的参数。参数之间必须用逗号隔开,整个参数列表必须包含在一对圆括号()中。表5-9列出了Show方法中需要的几个重要的参数及其含义。图5-14MessageBox的使用表5-9Show方法中几个重要的参数

图5-15使用了上表的示例选项,效果如下。相关的代码如下所示:

MessageBox.Show("Doyouwanttosavethisfile?", "QuestionBox",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1,MessageBoxOptions.DefaultDesktopOnly);图5-15一个消息框5.4实例2:创建一个使用控件的应用程序在这一节中,我们将学习如何使用WinForms中的控件和消息框,创建一个信息录入界面。具体步骤如下:

(1)创建一个Windows应用程序。

(2)设计如图5-16所示的窗体界面。

(3)按照表5-10中所示设置控件的属性。

(4)将用户选择的“标准/班级:”信息存储在public变量std中。声明变量:

publicstringstd;图5-16设计界面表5-10控件的属性(5)在ListBox控件ListStd的SelectedIndexChanged事件中输入下列代码:

privatevoidListStd_SelectedIndexChanged(objectsender,System.EventArgse){ std=ListStd.Text;}(6)类似地,将用户选择的“系:”存储在public变量div中。声明变量:

publicstringdiv;(7)在ComboBox控件cbDiv的SelectedIndexChanged事件中输入下列代码:privatevoidcbDiv_SelectedIndexChanged(objectsender,System.EventArgse){ div=cbDiv.Text;}(8)当用户单击【确认学员详细信息】按钮时,确认输入的详细信息。在buttonConfirm按钮的Click事件中,输入下列代码:

privatevoidbuttonConfirm_Click(objectsender,System.EventArgse) { intcnt; stringhobby=""; cnt=this.clHobby.CheckedItems.Count; for(inty=0;y<cnt;y++) { hobby=hobby+clHobby.CheckedItems[y]+","; }MessageBox.Show(txtName.Text+"出生于"+txtDtofBirth.Text+ "来自标准/班级:"+std+",系:"+div+"具有下列爱好:"+hobby); }(9)【清除】按钮用于清除用户输入的值。在buttonClear按钮的Click事件中,输入下列代码:

privatevoidbuttonClear_Click(objectsender,System.EventArgse) { txtName.Text=""; txtDtofBirth.Text=""; listStd.SelectedIndex=-1; clHobby.Items.Clear(); clHobby.Items.AddRange(newobject[]{"唱歌","跳舞","游泳","阅读"}); }(10)保存并运行应用程序,查看效果。5.5窗体容器简介窗体是编写Windows应用程序的基础,应用程序的基本单元都是窗体。窗体也是提供给用户以便与应用程序交互的屏幕。用户提供所需的详细信息以及查看所请求的信息都是通过窗体进行的。一个应用程序可以有多个窗体。窗体可以是下列组件中的一种。

标准窗口

多文档界面

对话框

图形程序的显示界面

在WinForms中,窗体表示为类。Form类可用于创建标准、无边框的浮动窗口。新建应用程序时,会自动为应用程序添加一个窗体。将窗体添加到应用程序中时,将会创建一个Form类的实例。5.5.1窗体属性窗体的属性既可以通过编写代码,也可以通过使用属性窗口来设置。设计时(即指在设计应用程序时)所作的属性设置都将作为应用程序每次运行时的初始设置。在设计时设置窗体属性的操作步骤如下:

(1)如果属性窗口还未打开,单击“视图”菜单上的“属性窗口”。

(2)在设计视图中,单击要设置属性的窗体。窗体的名称出现在属性窗口顶部的Object下拉列表中。(3)用属性窗口中的按字母排序按钮和按分类顺序按钮来选择属性的显示方式,即按照字母顺序显示还是按照类别分类显示。

(4)在属性窗口中,单击要设置的属性。注意,单击属性时,该属性的相关描述就出现在属性窗口底部的Description窗格中。

(5)输入或选择需要的属性设置。

(6)要查看新的属性设置如何作用于窗体,可以单击标准工具栏上的启动按钮来运行应用程序。表5-11描述了一些常用的窗体属性,在设计时一般都要对这些属性进行设置。表5-11常用的窗体属性5.5.2窗体的常用方法和事件

1.窗体方法窗体提供了一些特定的方法,也就是它们所能执行的操作。通过调用窗体的某一方法可指定执行相应的操作。

1)常用方法表5-12描述了一些常用的窗体方法。

2)语法如要在代码中调用窗体的方法,可使用下面的语法:this.Method();

 this是指当前的窗体实例。

Method是指调用的窗体方法。

代码后面必须添加一对圆括号(),可在其中附加参数等信息。表5-12常用的窗体方法3)调用方法示例以下代码通过调用窗体的CenterToScreen方法使窗体居中显示:

this.CenterToScreen();4)使用智能感知提供了智能感知(IntelliSense)功能,即在弹出窗口和下拉列表中显示和代码有关的信息,从而方便用户的输入。可以使用智能感知来查看和选择对象可用的属性、方法和对象事件。使用智能感知来查看和选择可用窗体方法的步骤如下:

(1)在设计视图中双击窗体。双击窗体后,将打开代码编辑器,并将设置光标在代码块中的位置。在这个示例中,将使用智能感知来为Form1_Load事件添加代码。(2)输入this。输入句点(.)后,智能感知将自动显示窗体可用的属性和方法,其中: 图标表示方法 图标表示属性 图标表示事件

(3)双击要调用的方法。选中的方法将自动输入到代码中,然后智能感知窗口就会自动关闭。

2.窗体事件如要响应对于对象所执行的操作,则需在事件处理程序中编写相关的代码。这样当事件发生时,就会执行这些代码。表5-13描述了一些常用的窗体事件。表5-13常用的窗体事件

事件是和事件处理程序联系在一起的。事件处理程序是指当相应的事件发生时即调用的一段代码。例如,可以在窗体的Activated事件的处理程序中编写代码来执行一些操作,如更新窗体控件的显示内容。注意:窗体事件按特定的顺序发生。例如,Load事件发生在Activated事件之前。因为事件发生的顺序就决定了代码运行的顺序,所以了解事件发生的顺序非常重要。添加事件处理程序的步骤如下:

(1)在设计窗口选定要添加事件处理程序的窗体。

(2)找到属性窗口,点击按钮。

(3)在出现的各种事件中选择一种,双击进入后台代码,编写事件处理程序。具体效果如图5-17所示。图5-17如何选择窗体事件5.5.3建立窗体之间的链接在大部分应用程序中,用户界面都由多个窗口或对话框组成。如果应用程序需要使用多个窗体,就要确定这些窗体是模态的还是非模态的。

1.非模态窗体非模态窗体允许用户在不关闭该窗体的前提下就可切换到另一个窗体或对话框。如果用户打开了多个非模态窗口,就可以把其中一个窗口移开,无需关闭该窗口,即可与其他窗体进行交互。

2.模态窗体模态窗体在关闭前是不允许用户与程序中的其他窗体进行交互的。在对其他窗体进行操作前,必须在程序中隐藏或关闭模态窗体(常用于响应用户操作)。例如,一个消息框就是模态窗体的示例。用户与程序中的其他窗体进行交互前必须先关闭该消息框。在C# 中创建的窗体都缺省为非模态。如要创建模态窗体,则需调用窗体的ShowDialog方法。下列代码段显示如何以有模式格式显示窗体。

FormAboutf=newFormAbout();f.ShowDialog();ShowDialog方法有一个可选参数owner,该参数可用于指定窗体的父子关系。例如,当主窗体中的代码显示对话框时,可将this作为该对话框的所有者传递,以使主窗体成为所有者,如以下代码段所示:

FormAboutf=newFormAbout();f.ShowDialog(this);

将窗体显示为无模式对话框可以调用Show方法。下列示例显示如何以无模式格式显示对话框。

FormAboutf=newFormAbout();f.Show();

如果窗体显示为有模式,则在关闭该对话框前,不执行ShowDialog方法后面的代码。但是,当窗体显示为无模式时,该窗体在显示之后,会立刻执行Show方法后面的代码。

3.隐藏窗体

Hide方法使窗体对象不可见,但不关闭它,也就是虽然该窗体不显示,但它所包含的对象和变量仍保留在内存中。可使用Hide方法在一个打开的窗体中隐藏另外一个窗体,语法如下:

FormName.Hide();

如要隐藏当前正在运行的窗体,可使用关键字this来调用该窗体的Hide方法。如下所示:

this.Hide();4.窗体交互考虑这样一个场景:用户单击第一个窗体上的某个按钮,应用程序就会显示第二个窗体。当第二个窗体打开后,用户不再需要显示第一个窗体,但需要处理该窗体中的变量或者元素,因此不能关闭第一个窗体。如要实现这个场景,则需在第一个窗体中添加一个按钮,并为其Click事件添加如下代码:

privatevoidbutton1_Click(objectsender,System.EventArgse){ FormAboutf=newFormAbout();f.Show(); this.Hide();}

5.关闭窗体

Close方法用来关闭窗体对象。关闭窗体后,所有创建在该窗体中的资源都被关闭,且窗体被清除。可使用Close方法在一个打开的窗体中关闭另外一个窗体,语法如下:

FormName.Close();如要关闭当前正在运行的窗体,可使用关键字this来调用该窗体的Close方法,如下所示:

this.Close();

注意:多文档界面(MDI)应用程序允许同时显示多个文档,其中每个文档都显示在各自的窗口中。MDI应用程序通常都有一个Window菜单,可用于在窗口之间或者文档之间切换,这些知识我们将在后续章节进行讲解。5.6实例3:创建多窗体的应用程序在这一节中,我们将学习如何创建多窗体的WinForms应用程序,并在不同窗体间传递数据。具体步骤如下:

(1)创建一个5.2.3节所示的Windows应用程序LoginApp,具体的属性设置和窗体设计可参考该节。

(2)在该项目中单击右键,添加一个新窗体Form2。

(3)在窗体Form2上添加一个Label,按照表5-14中所示设置Label的属性。表5-14Label属性设置(4)在窗体Form2的类中添加一个公有属性成员UserName:

publicclassForm2:System.Windows.Forms.Form { privateSystem.Windows.Forms.Labellabel1; //… publicstringUserName //添加一个属性

{ get{returnthis.label1.Text;} set{this.label1.Text=value;} } //…}(5)选择窗体Form1,然后双击Button,进入Click事件并输入以下代码:

privatevoidbtnLogin_Click(objectsender,System.EventArgse) { if(txtName.Text=="admin"&&txtPwd.Text=="123") { Form2myfrm=newForm2(); myfrm.UserName=this.txtName.Text+"欢迎你!"; myfrm.ShowDialog(); myfrm.Dispose(); } else { lblResult.Text="用户名或密码有误"; txtName.Focus(); txtName.SelectAll(); } }(6)保存并运行该程序,我们发现,当用户输入正确的用户名和密码后,程序将转移至第二个界面,同时在第二个界面上显示用户名和欢迎信息。具体实现效果如图5-18所示。图5-18运行结果5.7综合案例:学生信息管理系统界面制作在前面的章节中,我们介绍了几种常见的Windows控件,并讲解了如何在窗体之间进行链接和显示。在这一节中,我们将结合上面的两部分知识点,开发一个带有登录界面的学生信息管理系统。具体的创建步骤如下:

(1)创建一个Windows应用程序StudentManageSystem。

(2)为该应用程序添加三个Windows窗体,分别为LoginFrm.cs、MainFrm.cs和HelpFrm.cs。下面来设置这三个窗体的页面布局和显示属性。①登录窗体LoginFrm.cs。在该窗体中添加各种控件,其设计效果如图5-19所示。图5-19LoginFrm界面

按照表5-15设置该窗体属性和控件属性的值。②主程序窗体MainFrm.cs。在该窗体中添加各种控件,其设计效果如图5-20所示。按照表5-16设置该窗体属性和控件属性的值。注意:当设计好上述属性后,将名为“学生详细信息”的GroupBox和名为“学生信息查询”的GroupBox进行重叠,使其显示图5-21所示的效果,此时“学生详细信息”的GroupBox在“学生信息查询”的GroupBox的下面。表5-15LoginFrm界面属性设置图5-20MainFrm界面表5-16MainFrm界面属性设置图5-21MainFrm界面③帮助窗体HelpFrm.cs。在该窗体中添加各种控件,其设计效果如图5-22所示。按照表5-17设置该窗体属性和控件属性的值。图5-22HelpFrm界面表5-17HelpFrm界面属性设置(3)为程序添加代码。①登录窗体LoginFrm.cs。双击该窗体的【登录】按钮,进入btnLogin_Click事件,添加如下代码:

privatevoidbtnLogin_Click(objectsender,EventArgse){if(txtUserName.Text=="admin"&&txtPwd.Text=="123"){this.Hide();MainFrmmyfrm=newMainFrm();myfrm.Name=this.txtUserName.Text;myfrm.ShowDialog();this.Close();}else{MessageBox.Show("用户名或密码有误");txtUserName.Focus();txtUserName.SelectAll();}}

双击该窗体的【取消】按钮,进入btnCancel_Click事件,添加如下代码:

privatevoidbtnCancel_Click(objectsender,EventArgse){Application.Exit();}②主程序窗体MainFrm.cs。在MainFrm.cs代码的命名空间下创建一个Class类,如下代码所示:

publicclassStudent //学生类

{publicstringname;publicstringid;publicstringbirth;publicstringStuclass;publicstringhobby;}

双击该窗体的【信息录入】按钮,进入btnInput_Click事件,添加如下代码:privatevoidbtnInput_Click(objectsender,EventArgse){groupStuInfo.Visible=true;groupStuCheck.Visible=false;}

双击该窗体的【信息查询】按钮,进入btnCheck_Click事件,添加如下代码:

privatevoidbtnCheck_Click(objectsender,EventArgse){groupStuInfo.Visible=false;groupStuCheck.Visible=true;}

双击该窗体的【退出系统】按钮,进入btnExit_Click事件,添加如下代码:

privatevoidbtnExit_Click(objectsender,EventArgse){Application.Exit();}

双击该窗体的【联系我们】按钮,进入btnHelp_Click事件,添加如下代码:

privatevoidbtnHelp_Click(objectsender,EventArgse){HelpFrmfm=newHelpFrm();fm.ShowDialog();}

双击“学生详细信息”GroupBox上的【添加】按钮,进入btnAdd_Click事件,添加如下代码。

同时在类中声明一个静态成员变量stuList。

privatestaticSortedListstuList=newSortedList(); //声明静态成员变量

privatevoidbtnAdd_Click(objectsender,EventArgse){stringhobby="";Studentstu=newStudent();stu.id=txtStuNo.Text;=txtStuName.Text;stu.birth=txtStuBirth.Text;stu.Stuclass=cmbStuClass.SelectedItem.ToString();foreach(objectiteminlstStuHobby.SelectedItems)hobby+=item.ToString()+",";stu.hobby=hobby;

stuList.Add(stu.id,stu);MessageBox.Show("学生信息已成功添加!");txtStuNo.Text="";txtStuName.Text="";txtStuBirth.Text="";cmbStuClass.SelectedIndex=-1;lstStuHobby.SelectedIndex=-1;}

双击“学生详细信息”GroupBox上的【清空】按钮,进入btnClear_Click事件,添加如下代码:

privatevoidbtnClear_Click(objectsender,EventArgse){txtStuNo.Text="";txtStuName.Text="";txtStuBirth.Text="";cmbStuClass.SelectedIndex=-1;lstStuHobby.SelectedIndex=-1;}

双击“学生信息查询”GroupBox上的【查询】按钮,进入btnStuCheck_Click事件,添加如下代码:

privatevoidbtnStuCheck_Click(objectsender,EventArgse){if(txtStuNoCheck.Text.Trim()=="")MessageBox.Show("请输入要查询的学号。");else{Studentstu=(Student)stuList[txtStuNoCheck.Text];if(stu!=null){lblCheckResult.Text="学生姓名:"++"\r\n"+"出生日期:"+stu.birth+"\r\n"+"班级:"+stu.Stuclass+"\r\n"+"爱好:"+stu.hobby;}elseMessageBox.Show("不存在这样的学生!");}}(4)保存并运行程序,最终的运行效果如图5-23~图5-26所示。图5-23登录界面图5-24主界面——添加学生信息图5-25主界面——查询学生信息图5-26显示帮助窗体本章小结

在WinForms中创建的Windows程序的基本单元是窗体。

窗体对象可以包含许多可视或不可视的页面组件。可视的页面组件统称为“控件”。

this关键字表示当前活动的窗体对象。

Label标签用于显示用户无法编辑的文本。

TextBox控件用于获取用户输入或者向用户显示文本。

Button控件提供了使用户能够与应用程序交互的最简便的方法。

 ListBox控件显示一个较长的选项列表,用户可以从该列表中选择自己的选项。

CheckBox控件组合了TextBox控件和ListBox控件的功能。

消息框是一个预定义的对话框,用于向用户显示信息,或询问一些简单的信息。

一个应用程序可以有多个窗体。窗体可以是标准窗口、多文档界面、对话框和图形程序的显示界面组件中的一种。练习与作业一、选择题

1.()控件组合了TextBox控件和ListBox控件的功能。

A. Label B. ComboBoxC. StatusBar D. PictureBox2.为了使TextBox的ScrollBar真正起作用,应该将TextBox的“自动换行”功能取消。取消该功能,需要将TextBox控件的()属性设置为False。

A. ScrollBars B. AcceptReturnsC. WordWrap D. AutoSize3. TextBox控件的PasswordChar属性的作用是()。

A.该属性是Boolean类型,表示是否使用*号隐藏输入的信息

B.该属性是String类型,表示输入的隐藏信息的实际内容C.该属性是Char类型,表示是用哪个字符隐藏输入的信息

D.该属性在C# 中未使用

4.所有控件都有的属性是()。

A. Text B. BackColorC. Item D. Name5.当关闭窗体时,将会引发Closed事件和Closing事件,下列说法正确的是()。

A.先引发Closed事件 B. 先引发Closing事件

6.()在响应之前不允许用户与程序中其他窗体进行交互。

A.主窗体 B.对话框

C.模态窗体 D.非模态窗体7.如何将非模态窗体转化成模态显示?()A.将窗体的Model属性设置成0 B.将窗体的Model属性设置成1C.用Show方法显示窗体

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论