GUI图形用户界面设计基础PPT课件_第1页
GUI图形用户界面设计基础PPT课件_第2页
GUI图形用户界面设计基础PPT课件_第3页
GUI图形用户界面设计基础PPT课件_第4页
GUI图形用户界面设计基础PPT课件_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

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

文档简介

C#windows程序设计,成都大学信息科学与技术学院软件工程系,课程介绍,课程简介本课程介绍使用C#开发Windows应用程序所需的知识和技能预备知识掌握基本的C#语法掌握数据库的基本知识掌握面向对象的编程思想能够使用VisualStudio.NET图形化界面开发环境,课程要求,课时:56课时,讲解内容,WinForm窗体介绍WinForm窗体基本操作WinForm控件的使用对话框编程菜单栏、工具栏、状态栏的使用,Windows线程程序设计文件操作数据库访问程序设计(C/S程序设计)GDI+图形图像处理网络编程,为什么要使用窗体,简单强大方便灵活,什么是窗体,Windows操作系统中,处处是窗体,GUI编程概述,.NET的功能和编程特点,VisualStudio2008IDE,VS解决方案和项目的组织结构,.解决方案和项目文件.sln、.suo、.cs、.csproj、.aspx、.asmx、.resx等。,解决方案和项目文件,项目开发过程,编写项目设计说明书设计用户界面设计用户界面中各种对象的属性编写代码添加功能测试与调试应用程序生成可执行文件创建应用程序的安装程序,VisualC#解决方案的创建,应用程序模板,DEMO,WinForm简介,Windows窗体的继承,WinForm的实现,form1类从S.W.F.Form类继承行为,认识WinForms,项目名称,主程序文件,包含Main方法,我们编写代码的文件,解决方案名称,窗体设计器代码文件,代码为VS自动生成,启动窗体,Main方法,位于Program.cs文件Windows程序的入口,/Program.csnamespaceMyFormstaticclassProgram.staticvoidMain()Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1();,Main方法,程序的入口,VS自动生成一般不需要理会,创建WinForms应用程序,usingSystem;usingSystem.Drawing;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Windows.Forms;namespaceSampleProject/Form1的摘要说明。/publicclassForm1:System.Windows.Forms.Form/必需的设计器变量./,提供了大量绘图工具的访问权限,基础核心命名空间,ArrayList、BitArray、Hashtable、Stack、StringCollection和StringTable类,大量窗体和控件,从System.Windows.Forms.Form派生,VisualStudio.NET生成的代码,创建WinForms应用程序6-4,privateSystem.ComponentModel.Containercomponents=null;publicForm1()/Windows窗体设计器支持所必需的/InitializeComponent();/TODO:在InitializeComponent调用之后添加任何构造函数代码/,构造函数调用InitializeComponent()方法,privatevoidInitializeComponent()ponents=newSystem.ComponentModel.Container();this.Size=newSystem.Drawing.Size(300,300);this.Text=Form1;,项目的容器,创建WinForms应用程序6-5,/清理所有正在使用的资源。/protectedoverridevoidDispose(booldisposing)if(disposing)if(components!=null)components.Dispose();base.Dispose(disposing);,释放系统资源,进一步认识窗体文件,WinForms窗体有两种编辑窗口:,窗体设计器窗口,窗体代码编辑窗口,?,为什么使用partial,具有双钥匙的密码箱,第一把钥匙,第二把钥匙,为了安全,两把钥匙分开放置,只有两把钥匙同时使用才能打开密码箱,用partial将同一个窗体的代码分开放在两个文件中:一个存放VS自动生成的代码一个存放我们自己编写的代码,程序员编写的代码,VS自动生成的代码,/Form1.Designer.csnamespaceMyFormpartialclassForm1/privatevoidInitializeComponent()/VS自动生成的代码this.ShowInTaskbar=false;this.Name=Form1;this.Text=Form1;this.TopMost=true;,运行时合到一起组成一个窗体文件,怎样使用partial,/Form1.csnamespaceMyFormpublicpartialclassForm1:FormpublicForm1()InitializeComponent();/我们编写的代码,构造函数做一些初始化的工作编译器自动调用,认识窗体类,/Form1.csnamespaceMyFormpublicpartialclassForm1:FormpublicForm1()InitializeComponent();,冒号表示继承Form类定义了窗体的基本属性和行为我们创建的窗体都继承自Form类Form1具有相应的属性和行为,Form类:.NET预定义的窗体类Form1继承自Form,窗体的重要属性,Name:窗体对象的名字,类似于变量的名字,BackColor:窗体的背景色,ShowInTaskBar:设置窗体是否出现在任务栏,StartPosition:窗体第一次出现时的位置,Text:窗体标题栏显示的文字,TopMost:设置窗体是否为最顶端的窗体,WindowState:窗体出现时最初的状态(正常、最大化、最小化),为什么使用事件,Windows系统中处处是事件:鼠标按下、鼠标释放、键盘键按下Windows系统通过事件处理来响应用户的请求,显示开始菜单,我的电脑窗口打开,事件触发,事件响应的结果,单击,双击,事件驱动,Windows通过随时响应用户触发的事件做出相应的响应事件驱动机制,我们需要做的:针对我们感兴趣的事件,编写相应的事件处理程序,WinForms应用程序也是事件驱动的,事件驱动编程,事件处理器参数,窗体的重要事件,Load:窗体加载事件MouseClick:鼠标单击事件MouseDoubleClick:鼠标双击事件MouseMove:鼠标移动事件KeyDown:键盘按下事件KeyUp:键盘释放事件,窗体有哪些事件?,通用验证方法,用于验证文本框中输入的数据是否有效,staticclassValidationpublicstaticvoidIsInteger(objectsender,CancelEventArgse)TextBoxa=senderasTextBox;ints;if(!int.TryParse(a.Text,outs)MessageBox.Show(请输入整形数据,计算器);e.Cancel=true;,publicstaticvoidIsInteger(objectsender,CancelEventArgse)/.,privatevoidForm1_Load(objectsender,EventArgse)textBox1.Validating+=newCancelEventHandler(Validation.IsInteger);textBox2.Validating+=newCancelEventHandler(Validation.IsInteger);,privatevoidbutton2_Click(objectsender,EventArgse)textBox1.Validating+=newCancelEventHandler(Validation.IsInteger);textBox2.Validating+=newCancelEventHandler(Validation.IsInteger);,privatevoidbutton3_Click(objectsender,EventArgse)textBox1.Validating-=newCancelEventHandler(Validation.IsInteger);textBox2.Validating-=newCancelEventHandler(Validation.IsInteger);,Windows窗体的基本操作,用户界面设计,人机交互设计与屏幕设计,Windows窗体与控件概述,Windows窗体的基本操作,1.启动Form,创建的窗体操作,1.调整窗体尺寸(1)在窗体设计器中手动设置窗体尺寸(2)通过属性窗口设置窗体的尺寸属性size:WidthHeight,(3)通过代码设置窗体的尺寸这种形式一般为程序运行期间设置窗体的大小。例如:用窗体显示位图文件讲窗体大小修改为200200像素,privatevoidbutton1_Click(objectsender,EventArgse)this.ClientSize=newSystem.Drawing.Size(200,200);,动态调整窗体中控件的位置,(1)禁止窗体大小变化(不灵活)(2)根据窗体大小变化比例动态调整控件的位置,publicForm1()InitializeComponent();intcount=this.Controls.Count*2+2;floatfactor=newfloatcount;inti=0;factori+=Size.Width;factori+=Size.Height;foreach(Controlctrlinthis.Controls)factori+=ctrl.Location.X/(float)Size.Width;factori+=ctrl.Location.Y/(float)Size.Height;ctrl.Tag=ctrl.Size;Tag=factor;,privatevoidForm1_Resize(objectsender,EventArgse)floatscale=(float)Tag;inti=2;foreach(Controlctrlinthis.Controls)ctrl.Left=(int)(Size.Width*scalei+);ctrl.Top=(int)(Size.Height*scalei+);ctrl.Width=(int)(Size.Width/(float)scale0*(Size)ctrl.Tag).Width);ctrl.Height=(int)(Size.Height/(float)scale1*(Size)ctrl.Tag).Height);/每次使用的都是最初始的控件大小,保证准确无误。,设置窗体在屏幕上的显示位置,(1)设置属性Location设置窗体的左上角坐标(2)设置属性StartPosition标识显示区域的边界(3)编程设置显示位置this.Left=300;或this.Left+=200;this.Top=200;或:this.Location=newPoint(300,200);,设置窗体的边框风格,设置属性FormBorderStyle,None:窗体无边框、无标题栏Fixed3D:使用3D边框效果,不允许重设窗体尺寸FixedDialog:用于对话框,不允许重设窗体尺寸FixedSingle:不允许重设窗体尺寸,为窗体创建单线边框Sizable:默认值,通常用于主窗口,可重设尺寸FixedToolWindow:用于工具窗口,显示不可重设尺寸的窗口。SizableToolWindows:用于工具窗口,显示可以重设尺寸的窗口。,捕捉窗体的鼠标事件,在窗体中捕捉鼠标事件主要有:,/窗体的鼠标移动事件处理程序privatevoidForm1_MouseMove(objectsender,MouseEventArgse)this.Text=String.Format(捕捉到鼠标了!(0,1),e.X,e.Y);,this关键字代表窗体本身,鼠标的横纵坐标,窗体标题栏显示的文字,鼠标事件参数,事件源,当鼠标在窗体上点击时,窗体的背景色改变:如果是红色,变成黄色如果是黄色,变成绿色否则变成红色,提示:处理窗体的MouseClick事件利用Color类得到某种颜色:红色Color.Red绿色Color.Green黄色Color.Yellow窗体的背景色:this.BackColor判断背景色:if(this.BackColor=Color.Red),/鼠标单击事件privatevoidForm1_MouseClick(objectsender,MouseEventArgse)if(this.BackColor=Color.Red)this.BackColor=Color.Yellow;elseif(this.BackColor=Color.Yellow)this.BackColor=Color.Green;elsethis.BackColor=Color.Red;,创建不同形式的窗体,创建顶层窗体创建透明窗体创建启动屏幕,显示另一窗体,被调用的窗体类窗体实例=new被调用的窗体类();,窗体实例.Show();,privatevoidcmdShow_Click(objectsender,System.EventArgse)frmAA=newfrmA();A.Show();,创建顶层窗体,顶层窗体始终处于应用程序的所有窗体之上。TopMost属性决定窗体是否为最顶层窗体,即使最顶层窗体处于非激活状态,仍然处于其他非顶层窗体之上。,privatevoidForm1_Load_1(objectsender,EventArgse)Form2newform=newForm2();newform.Show();,创建透明窗体,可以设置窗体的透明度设置属性Opacity,其取值范围为0.0(完全透明)1.0(完全不透明)可以编程设置:this.Opacity=0.5,privatevoidForm1_Load(objectsender,EventArgse)trackBar1.Maximum=90;trackBar1.TickFrequency=3;,privatevoidtrackBar1_ValueChanged(objectsender,EventArgse)inti,j;i=trackBar1.Value;j=trackBar1.Maximum;this.Opacity=(double)(j-i)/j;,privatevoidbutton1_Click_1(objectsender,EventArgse)trackBar1.Value=0;button1.Enabled=false;trackBar1.Enabled=false;for(doublei=0.02;i=1;i+=0.02)this.Opacity=i;System.Windows.Forms.Application.DoEvents();System.Threading.Thread.Sleep(500);this.Opacity=1;button1.Enabled=true;trackBar1.Enabled=true;,创建启动屏幕,当应用程序装载大量数据时,可以显示一个启动屏幕。(1)添加一个新的窗体对象Form2添加启动窗口中的控件设置:privateSystem.Windows.Forms.Labellabel1;privateSystem.Windows.Forms.PictureBoxpictureBox1;publicSystem.Windows.Forms.ProgressBarprogressBar1;publicSystem.Windows.Forms.Labellabel2;,(2)在主窗口中:publicForm1()Form2t=newForm2();t.Show();InitializeComponent();for(inti=1;i=100;i+)for(Int64j=0;j=100000;j+);t.label2.Text=i.ToString()+%;gressBar1.Value=i;t.Refresh();t.Close();,改变窗体与控件的形状,改变窗体的形状,privatevoidForm1_Paint(objectsender,PaintEventArgse)GraphicsPathshape=newGraphicsPath();shape.AddEllipse(0,0,this.Width,this.Height);this.Region=newRegion(shape);,需要使用usingSystem.Drawing.Drawing2D;,改变控件的形状,privatevoidbutton_Paint(objectsender,PaintEventArgse)GraphicsPathshape=newGraphicsPath();shape.AddEllipse(0,0,this.button4.Width,this.button4.Height);this.button.Region=newRegion(shape);,创建任意形状的窗体,关闭窗体的实现,在窗体中添加一个button控件,privatevoidbutton_Click(objectsender,EventArgse)this.Close();,实现窗体的移动,privatePointmouse_offset;/创建一个Point对象,该对象(作为一个变量)决定在什么情况下移动窗体privatevoidForm1_MouseDown(objectsender,System.Windows.Forms.MouseEventArgse)/创建窗体的MouseDown事件的事件处理函数,用户就可以在任何位置移动窗体mouse_offset=newPoint(-e.X,-e.Y);/记录鼠标按下时的位置(负值)privatevoidForm1_MouseMove(objectsender,System.Windows.Forms.MouseEventArgse)/创建窗体的MouseMove事件的事件处理函数,当鼠标左键被按下,同时鼠标被移动时,窗体的Location属性就被设置为新的位置if(e.Button=MouseButtons.Left)PointmousePos=Control.MousePosition;/获取当前屏幕位置mousePos.Offset(mouse_offset.X,mouse_offset.Y);/以屏幕坐标平移制定的量Location=mousePos;/设置当前窗体在屏幕中的位置,编码方式,privatevoidForm1_Load(objectsender,EventArgse)Rectanglerect=this.ClientRectangle;GraphicsPathpath=newGraphicsPath();path.AddEllipse(rect);this.Region=newRegion(path);privatevoidForm1_SizeChanged(objectsender,EventArgse)Rectanglerect=this.ClientRectangle;GraphicsPathpath=newGraphicsPath();path.AddEllipse(rect);this.Region=newRegion(path);,创建环形窗口,privateboolhasNormalRegion=true;privatevoidbutton2_Click(objectsender,EventArgse)if(hasNormalRegion)System.Drawing.Drawing2D.GraphicsPathp=newSystem.Drawing.Drawing2D.GraphicsPath();intbigDi=this.ClientSize.Height;intdonutWidth=100;p.AddEllipse(0,0,bigDi,bigDi);p.AddEllipse(donutWidth,donutWidth,bigDi-(donutWidth*2),bigDi-(donutWidth*2);this.Region=newRegion(p);elsethis.Region=null;hasNormalRegion=!hasNormalRegion;,创建飘动的窗体,在窗体上放置两个Timer控件Timer属性Interval设置为10(表示10ms引发Tick事件),privatevoidForm1_Load(objectsender,EventArgse)Pointp=newPoint(0,240);this.DesktopLocation=p;,privatevoidtimer1_Tick(objectsender,EventArgse)Pointp=newPoint(this.DesktopLocation.X+1,this.DesktopLocation.Y);this.DesktopLocation=p;if(p.X=600)timer1.Enabled=false;timer2.Enabled=true;,privatevoidtimer2_Tick(objectsender,EventArgse)Pointp=newPoint(this.DesktopLocation.X-1,this.DesktopLocation.Y);this.DesktopLocation=p;if(p.X=0)timer1.Enabled=true;timer2.Enabled=false;,创建系统托盘,.什么是系统托盘,采用notifyIcon控件实现。,privateboolhasNormalRegion=true;priv

温馨提示

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

评论

0/150

提交评论