windows应用开发.ppt

上传人:牧羊曲112 文档编号:6523729 上传时间:2023-11-08 格式:PPT 页数:75 大小:1.13MB
返回 下载 相关 举报
windows应用开发.ppt_第1页
第1页 / 共75页
windows应用开发.ppt_第2页
第2页 / 共75页
windows应用开发.ppt_第3页
第3页 / 共75页
windows应用开发.ppt_第4页
第4页 / 共75页
windows应用开发.ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《windows应用开发.ppt》由会员分享,可在线阅读,更多相关《windows应用开发.ppt(75页珍藏版)》请在三一办公上搜索。

1、第8章 Windows项目开发,第8章 widows应用开发,窗体Form类Windows窗体类层次结构控件与组件菜单和工具栏MDI窗体用户控件,Windows开发的基本步骤,8.1系统开发基本步骤,系统设计,需求分析,数据库设计,界面设计,代码设计,测试发布,超市进销存管理系统功能,8.1系统开发基本步骤,作业8.1,根据商品进销存管理系统功能框架完成其数据库设计(要求:用SQL Server2005(2008)版本),8.1系统开发基本步骤,超市进销存管理系统业务流程图,8.1系统开发基本步骤,第8章 widows应用开发,窗体控件描述,可视化类属性设计方法调用事件机制(消息循环),登录窗

2、体界面设计,8.1系统开发基本步骤,Form类,8.2 Form类,窗体是应用程序的基本单元,表示组成应用程序的 用户界面的窗口或对话框。当向项目添加窗体时,可选择从框架提供的Form类 继承还是从以前创建的窗体继承。窗体是容器类控件,从Control类继承。窗体常有单文档界面(SDI)、资源管理器样式界 面、多文档界面(MDI)。,Form类常用事件,8.2 Form类,说明,Activated事件:发生于Load之后,即当控件被传递到窗体上时,以后每次显示该窗体时,Activate事件将再次发生。但Load事件不再发生。所以若某个窗体可能被多次显示,则应把初始化步骤放入其中而非Load事件

3、中。,例:若希望把焦点设置在新窗体上某个特定的控件,则应在该事件方法中调用Focus方法。,8.2 Form类,Form类常用属性,Visible 属性:在窗体的可见性在事件中,若希望 Windows 应用程序的主窗体在应用程序启动时不可见,设 Visible=flase无效。因为通常启动窗体的生存期决定了应用程序的生存期,只要将应用程序的启动变为一个模块即可有效。因为当“关闭”模块时,应用程序的生存期也随之结束。,8.2 Form类,TopMost 属性,顶端的窗体始终位于指定应用程序中所有窗口的前面。例如,可能希望将浮动工具窗口保持在应用程序主窗口的前面。TopMost 属性控制窗体是否为

4、最顶端的窗体。,说明:,即使最顶端的窗体不处于活动状态,它也会浮在其他非顶端窗体之前。,8.2 Form类,FormBorderStyle 属性,8.2 Form类,Location 属性,指定窗体在计算机屏幕左上角的显示位置。它以像素为单位指定窗体的位置。还需要设置 StartPosition 属性,以指示显示区域的边界。Windows应用程序的 StartPosition 属性的默认设置是“WindowsDefaultLocation”,该设置通知操作系统在启动时根据当前硬件计算该窗体的最佳位置。,8.2 Form类,Application类,表示整个应用程序,用于管理程序、线程和Wind

5、ows 消息,通常用来显示一个应用程序的最初窗体。它是Sealed类,也不能创建实例对象,它属命名空间。,Run:在当前线程下启动一个标准消息循环。若已提供窗体,则令该窗体可见。,常用的static方法:,8.2 Form类,Control基类常用属性,8.3 Control类,Control基类常用事件,8.3 Control类,Windows常用控件,8.3 Control类,Label控件类,8.3 Control类,显示提示信息。,LinkLabel控件类,8.3 Control类,可显示超链接的 Windows 标签控件。,TextBox控件类,8.3 Control类,可用于显示或

6、编辑无格式文本的控件。默认最多输入 2048 个字符。MultiLine=true,则最多可输入 32 KB 的文本,TextBox控件类常用方法与事件,8.3 Control类,按钮Button控件类,8.3 Control类,表示一个响应ButtonBase.Click事件的Windows 按钮控件,按钮Button控件类,8.3 Control类,btn.FlatStyle=FlatStyle.Flat;/样式btn.ForeColor=Color.Transparent;/前景btn.BackColor=Color.Transparent;/去背景btn.FlatAppearance.

7、BorderSize=0;/去边线btn.FlatAppearance.MouseOverBackColor=Color.Transparent;/鼠标经过btn.FlatAppearance.MouseDownBackColor=Color.Transparent;/鼠标按下,设置透明背景的Button,例:设计一个加法器,8.2 Form类,思考,如何在第一个文本框按下回车键后自动进入 下一个文本框如何使提示信息更人性化。例第一个文本框 输入错误时就给出出错信息何时采用异常机制好,是在单击“计算”按钮 时?还是,完善加法器,使其更具人机交互性,8.2 Form类,容错性设计,8.2 For

8、m类,private void textBox1_KeyPress(object sender,KeyPressEventArgs e)if(e.KeyChar=0,KeyPressEventArgs事件参数e.Handled属性,将 Handled 设置为 true,则取消 KeyPress 事件,容错性设计_通用文本框按键事件代码,8.2 Form类,private void txtNum1_KeyPress(object sender,KeyPressEventArgs e)TextBox t=(TextBox)sender;if(t!=null)if(t.Name=txtNum1)if

9、(e.KeyChar=(Char)Keys.Enter)txtNum2.Focus();if(e.KeyChar=0,作业,8.2 Form类,完善两个数的加法运算,使其满足,使用异常机制使其具有较好的容错性合理使用KeyPress事件实现焦点转移,ListBox控件类,8.3 Control类,显示可选列表项。,ListBox.Items集合常用方法,8.3 Control类,可以在在设计时使用Items属性向列表添加项。,ListBox控件类属性/事件,8.3 Control类,组合框ComboBox控件类,8.3 Control类,由文本框和列表框组成,控件分两部分显示:,其他属性、方法

10、、事件与ListBox类似,作业,8.3 Control类,下载并模拟QQ登录界面,单选按钮RadioButton控件类,8.3 Control类,派生于ButtonBase类。可使用GroupBox控件将多个RadioButton组成一组。否则默认窗体中所有RadioButon是同一个组。,注意Form_Activated事件对初始化的作用。,单选按钮RadioButton控件类,8.3 Control类,派生于ButtonBase类。可使用GroupBox控件将多个RadioButton组成一组。否则默认窗体中所有RadioButon是同一个组。,注意Form_Activated事件对初始

11、化的作用。,复选框CheckBox控件类,8.3 Control类,派生于ButtonBase类。可使用GroupBox控件将多个RadioButton组成一组。否则默认窗体中所有RadioButon是同一个组。,其他参见RadioButton,分组框Group Box控件类,8.3 Control类,容器类控件。类似于 Panel、TabControl、Splittert 等控件。GroupBox 控件可以显示标题(分组框的标题由 Text属性定义)。Panel 控件有滚动条TabControl选项卡控件,用于显示多个选项卡,列表视图ListView控件类,8.3 Control类,创建类似

12、于 Windows 资源管理器右窗格的用户界面,8.3 Control类,例,8.3 Control类,private void comboBox1_SelectedIndexChanged(object sender,EventArgs e)int i;string dir=Directory.GetDirectories(comboBox1.SelectedItem.ToString();/listView1.BeginUpdate();listView1.Clear();listView1.View=View.Details;ColumnHeader a0=new ColumnHeade

13、r();a0.Text=名称;a0.Width=200;ColumnHeader a1=new ColumnHeader();a1.Text=大小;a1.Width=150;ColumnHeader a2=new ColumnHeader();a2.Text=类型;a2.Width=200;ColumnHeader a3=new ColumnHeader();a3.Text=修改日期;a3.Width=100;listView1.Columns.AddRange(new ColumnHeader a0,a1,a2,a3);for(i=0;idir.Length;i+)DirectoryInfo

14、 d=new DirectoryInfo(diri);listView1.Items.Add(new ListViewItem(new stringd.Name,文件夹,d.LastAccessTime.ToLongDateString(),0);string s2=Directory.GetFiles(comboBox1.SelectedItem.ToString();foreach(string k in s2)FileInfo info=new FileInfo(k);ListViewItem item=new ListViewItem(new string info.Name,info

15、.Length.ToString(),文件,info.LastWriteTime.ToString(),2);this.listView1.Items.Add(item);/listView1.EndUpdate();,状态栏(StatusStrip)控件类,8.3 Control类,StatusStrip控件上可以有状态栏面板,用于显示指示状态的文本或图标,或一系列指示进程正在执行的动画图标(如:指示正在保存文档)。,指示某个页面的 URL。提供有关页、节位置和编辑模式的信息。进度条(ProgressBar)控件,例:,图片框(PictureBox),8.3 Control类,显示位图bmp

16、、GIF/PNG、JPEG、图元文件(wmf)或图标格式(ico)的图片。,定时器Timer控件类,8.3 Control类,按用户指定的时间间隔来触发事件。Enabled属性:指定定时器是否可以触发事件。默认值为 false。InterVal属性:指定定时器控件触发的时间间隔,单位为毫秒。Tick事件:当运行每当到达指定时间间隔,就会触发这个事件。Start方法:启动定时器实例。,菜单MenuStrip类,8.4 菜单类,应用程序可以为不同的上下文(应用程序状态)显示不同的菜单。通过包含多个 MenuStrip对象,可以处理用户与应用程序交互时应用程序的不同状态。单击菜单上的某个项常是完成打

17、开一个子菜单或导致应用程序执行一个命令。,“-”子菜单分组线“&”热键标识,菜单设计时的特殊符号,菜单MenuStrip类,8.4 菜单类,ToolStripMenuItem类,表示 MenuStrip 或 ContextMenuStrip 上显示的可选选项。提供配置菜单项的外观和功能的属性,ToolStripItem类,8.4 菜单类,表示对 ToolStrip 或 ToolStripDropDown 可以包含的所有元素的事件和布局进行管理的基类,说 明,8.4 菜单类,删除一级菜单项是将该菜单项从相应的 MenuStrip 的Items集合的Remove方法中删除。若此菜单项需再次使用,最

18、好是隐藏或暂时禁用该 菜单项而不是删除它。删除二级菜单或三级菜单,使用其父级对象 ToolStripMenuItem的DropDownItems集合的Remove 方法。,contextMenuStrip控件类,8.4 菜单类,设计时与MenuStrip菜单一致,关联时,将控件或对象的ContextMenustrip属性设为快捷菜单名称既可。,ToolStrip控件类,设计时与MenuStrip菜单相似。,例,8.4 菜单类,private void toolStripButton1_Click(object sender,EventArgs e)/工具栏中第一个命令按钮的默认事件名 Font

19、 newFont=new Font(this.rtfBox.SelectionFont,this.rtfBox.SelectionFont.Bold?rtfBox.SelectionFont.Style,例,8.4 菜单类,private void ToolStripMenuItemRoman_Click(object sender,EventArgs e)try Font newFont=new Font(Times New Roman,rtfBox.SelectionFont.Size+4,rtfBox.SelectionFont.Style);rtfBox.SelectionFont=n

20、ewFont;catch(Exception)MessageBox.Show(error!);,也可在快捷菜单的单击事件中进行判断,简化程序,/因为参数是FontStyle,所以用位运算处理,只更改Bold位,例:通过工具栏相关属性判断是哪个项被单击处理,8.4 菜单类,private void toolStrip1_ItemClicked(object sender,ToolStripItemClickedEventArgse)for(int i=0;i(ToolStrip)(sender).Items.Count;i+)if(ToolStrip)(sender).Itemsi=e.Clic

21、kedItem)MessageBox.Show(e.ClickedItem.ToString();Font newFont=new Font(this.richTextBox1.SelectionFont,this.richTextBox1.SelectionFont.Bold?richTextBox1.SelectionFont.Style,e.ClickedItem返回被单击的工具栏项ToolStripButtom,常用.NET对话框类,8.5 常用对话框,commonDialog对话框是在父窗口中显示的窗口,窗体对话框分类,如“关于”对话框和“打开文件”对话框,在得到响应前阻止用户切换到

22、其他窗体和对话框。,无模式对话框,如“单词查找”对话框,与主窗体并排存在,可相互切换。,8.5 常用对话框,模式对话框,常用对话框,8.5 常用对话框,CommonDialog常用方法和事件表,8.5 常用对话框,DialogResult枚举类型值,8.5 常用对话框,OpenFileDialog类的属性,8.5 常用对话框,说明,8.5 常用对话框,在开发中不应使用目录硬字符串。可使用System.Environment.GetFolderPath()。它接受Environment.SpecialFolder枚举,其中可定义要返回路径的系统目录。Filter过滤器是一集合,显示于Files

23、of type对应的列表框中。每对用一竖杠字符“|”分隔,每个部分需要两个字符串,所以总是偶数,第一个串定义要在列表框中显示的文本,第二个串对应的扩展名。,8.5 常用对话框,将InitialDirectory设为通用用户模板目录。String dir=Environment.GetFolderPath(Environment.SpecialFolder.Templates)对象实例名.InitialDirectory=dir;,例,dlg.Filter=“text documents|*.txt|All File|*.*”;注:过滤器前后不允许有空格。,例,8.5 常用对话框,有效性验证Va

24、lidateNames属性,在试图打开一个文件前,OpenFileDialog可自动执行对文件的有效性验证。ValidateNames设为true,则检查,若输入无效文件名(例、=)等,并单击OK键后,会自动提示,此时只有更正文件名或单击cancal之后,才能退出。同时,ValidateNames设为true,就可使用CheckFileExists和CheckPathExists进行文件、路径等有效性验证。,8.5 常用对话框,SaveFileDialog对话框常用属性,8.5 常用对话框,FontDialog对话框,:if(fontDialog1.ShowDialog()=DialogRes

25、ult.OK)/文本框对象.Font=fontDialog1.Font;/对选中文本设置字体 RichTextBox实例名.SelectionFont=fontDialog1.Font;,例,8.6 多窗体关联,多窗体关联,对非模态窗体而言,Close方法将销毁窗体实例。而 模态窗体只是隐藏,在第二次调用ShowDialog时,将 再次显示原实例,从而保留原窗体中的数据。,8.6 多窗体关联,窗体间的值传递,例:从Form1的button_Click事件实现窗体间传值。,private void button1_Click(object sender,EventArgs e)Form2 f=n

26、ew Form2();f.a=form1传递过来的值;f.Show();,8.6 MDI多文档窗体,多文档界面(MDI),传统上,可编写3种基于Windows的应用程序:,基于对话框的应用程序(Explorer界面)。单一文档界面(SDI),如记事本、计算器。多文档界面(MDI),执行方式与SDI相同,但 同时可打开多个窗口。,建立MDI应用程序步骤:,创建MDI父窗体(容器)创建MDI子窗体,8.6 MDI多文档窗体,8.6 MDI多文档窗体,MainMenu已被Menustrip替代,8.6 MDI多文档窗体,8.6 MDI多文档窗体,MDI应用程序中常用到的类成员,8.6 MDI多文档窗

27、体,8.6 MDI多文档窗体,合并菜单,当MDI父、子窗体都有相同的菜单项时,合并菜单应处理该情况。在MDI应用程序中,MDI容器窗体自动合并打开的子窗体的菜单。修改菜单项MergeAction 属性,MergeAction 枚举,8.6 MDI多文档窗体,作业设计简单文本编辑器,用RichTextBox控件实现相应功能有相应的设计文档提交提交软件.解决方案命名格式:专业+班级+学号+姓名+方案名,8.6 MDI多文档窗体,双方菜单的AllowMerge设为:True父窗体中具有与子窗体菜单相同菜单项,且需要合并者均设MergeAction为:Matchonly。且双方的各菜单项的子菜单项的MergeIndex从0开始编号,需放在最后的可为-1,且子菜单项各项设MergeAction为:insert。子窗体中菜单项在父窗体中菜单中没有的,可设MergeAction为:insert。且对双方非合并项的MergeIndex从0开始编号。(分隔线也算一项)设子窗体中菜单Visible为false.,说明,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号