




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#windows课程介绍课程简介本课程介绍使用C#开发Windows应用程序所需的知识和技能预备知识掌握基本的C#语法掌握数据库的基本知识掌握面向对象的编程思想能够使用VisualStudio.NET图形化界面开发环境课程要求课时:56课时讲解内容WinForm窗体介绍WinForm窗体基本操作WinForm控件的使用对话框编程菜单栏、工具栏、状态栏的使用Windows线程程序设计文件操作数据库访问程序设计(C/S程序设计)GDI+图形图像处理网络编程为什么要使用窗体简单强大方便灵活……什么是窗体Windows操作系统中,处处是窗体
GUI编程概述.NET的功能和编程特点VisualStudio2008IDEVS解决方案和项目的组织结构.解决方案和项目文件
.sln、.suo、.cs、.csproj、.aspx、.asmx、.resx等。解决方案和项目文件扩展名描述.csVisualC#源程序文件表示属于单个项目的窗体、用户控件、类和模块文件。.slnVisualStudio解决方案文件组织解决方案中的项目、项目子项和其他子项。.aspxWeb项目文件表示Web项目子项文件。.suo解决方案用户选项文件记录所有可能和解决方案相关的选项。.csprojVisualC#项目文件表示属于多个项目的窗体、用户控件、类和模块文件。项目开发过程编写项目设计说明书设计用户界面设计用户界面中各种对象的属性编写代码添加功能测试与调试应用程序生成可执行文件创建应用程序的安装程序VisualC#解决方案的创建应用程序模板DEMOWinForm简介Windows窗体的继承WinForm的实现
form1类从S.W.F.Form类继承行为认识WinForms项目名称主程序文件,包含Main方法我们编写代码的文件解决方案名称窗体设计器代码文件,代码为VS自动生成启动窗体Main方法位于Program.cs文件Windows程序的入口//Program.csnamespaceMyForm{staticclassProgram{……..staticvoidMain(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1());}}}Main方法,程序的入口VS自动生成一般不需要理会创建WinForms应用程序usingSystem;usingSystem.Drawing;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Windows.Forms;namespaceSampleProject{ ///<summary> ///Form1的摘要说明。
///</summary> publicclassForm1:System.Windows.Forms.Form { ///<summary> ///必需的设计器变量. ///</summary>提供了大量绘图工具的访问权限基础核心命名空间ArrayList、BitArray、Hashtable、Stack、StringCollection
和StringTable类大量窗体和控件从System.Windows.Forms.Form
派生VisualStudio.NET
生成的代码创建WinForms应用程序6-4privateSystem.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///<summary>///清理所有正在使用的资源。///</summary>protectedoverridevoidDispose(booldisposing){ if(disposing) { if(components!=null)
{ components.Dispose(); } } base.Dispose(disposing);}释放系统资源进一步认识窗体文件WinForms窗体有两种编辑窗口:窗体设计器窗口窗体代码编辑窗口?为什么使用partial具有双钥匙的密码箱第一把钥匙第二把钥匙为了安全,两把钥匙分开放置只有两把钥匙同时使用才能打开密码箱用partial将同一个窗体的代码分开放在两个文件中:一个存放VS自动生成的代码一个存放我们自己编写的代码程序员编写的代码
VS自动生成的代码//Form1.Designer.csnamespaceMyForm{
partialclassForm1{//……privatevoidInitializeComponent(){//VS自动生成的代码
this.ShowInTaskbar=false;this.Name="Form1";this.Text="Form1";this.TopMost=true;}}}运行时合到一起组成一个窗体文件怎样使用partial//Form1.csnamespaceMyForm{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}//我们编写的代码
}}构造函数做一些初始化的工作编译器自动调用认识窗体类//Form1.csnamespaceMyForm{publicpartialclassForm1:Form{publicForm1(){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:键盘释放事件……窗体有哪些事件?通用验证方法用于验证文本框中输入的数据是否有效
staticclassValidation{publicstaticvoidIsInteger(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)通过代码设置窗体的尺寸这种形式一般为程序运行期间设置窗体的大小。例如:用窗体显示位图文件讲窗体大小修改为200×200像素
privatevoidbutton1_Click(objectsender,EventArgse){this.ClientSize=newSystem.Drawing.Size(200,200);}动态调整窗体中控件的位置(1)禁止窗体大小变化(不灵活)(2)根据窗体大小变化比例动态调整控件的位置
publicForm1(){InitializeComponent();intcount=this.Controls.Count*2+2;float[]factor=newfloat[count];inti=0;factor[i++]=Size.Width;factor[i++]=Size.Height;foreach(Controlctrlinthis.Controls){factor[i++]=ctrl.Location.X/(float)Size.Width;factor[i++]=ctrl.Location.Y/(float)Size.Height;ctrl.Tag=ctrl.Size;}Tag=factor;}privatevoidForm1_Resize(objectsender,EventArgse){float[]scale=(float[])Tag;inti=2;foreach(Controlctrlinthis.Controls){ctrl.Left=(int)(Size.Width*scale[i++]);ctrl.Top=(int)(Size.Height*scale[i++]);ctrl.Width=(int)(Size.Width/(float)scale[0]*((Size)ctrl.Tag).Width);ctrl.Height=(int)(Size.Height/(float)scale[1]*((Size)ctrl.Tag).Height);//每次使用的都是最初始的控件大小,保证准确无误。
}}设置窗体在屏幕上的显示位置(1)设置属性Location
设置窗体的左上角坐标(2)设置属性StartPosition
标识显示区域的边界(3)编程设置显示位置
this.Left=300;或this.Left+=200;this.Top=200;
或:this.Location=newPoint(300,200);设置窗体的边框风格设置属性FormBorderStyleNone:窗体无边框、无标题栏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;}else{
this.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;privatevoid环形ToolStripMenuItem_Click(objec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育中的创新思维
- 乡村修建合同范本
- 谷雨农事全攻略
- 健康大赛复习试题有答案
- 卫浴店员招聘合同范本
- 营养配餐设计复习试题及答案
- 2025年合成橡胶型胶粘剂合作协议书
- 液压与气动技术 第2版 课件 项目六 调速回路的设计与构建
- 农村建房邻居协议书范本
- 代理金融销售合同范例
- 2025年共青科技职业学院单招职业适应性测试题库完整版
- 2025年上半年潜江市城市建设发展集团招聘工作人员【52人】易考易错模拟试题(共500题)试卷后附参考答案
- 统编版语文二年级下册15古诗二首 《晓出净慈寺送林子方》公开课一等奖创新教学设计
- 旅游电子商务(第2版) 课件全套 周春林 项目1-8 电子商务概述-旅游电子商务数据挖掘
- 2025年安徽警官职业学院单招职业适应性测试题库带答案
- 广东广东省钱币学会招聘笔试历年参考题库附带答案详解
- 2024年江西应用工程职业学院单招职业技能测试题库标准卷
- 医疗机构主要负责人签字表(示例)
- 无犯罪记录证明委托书(共4篇)
- 粉尘防爆安全知识最全课件
- 公办园招聘副园长面试题
评论
0/150
提交评论