创建特定形状的窗体课件

上传人:20****08 文档编号:241304708 上传时间:2024-06-16 格式:PPT 页数:46 大小:611.37KB
返回 下载 相关 举报
创建特定形状的窗体课件_第1页
第1页 / 共46页
创建特定形状的窗体课件_第2页
第2页 / 共46页
创建特定形状的窗体课件_第3页
第3页 / 共46页
点击查看更多>>
资源描述
创建特定形状的窗体创建特定形状的窗体DEMO11创建特定形状的窗体DEMO11添加窗体的添加窗体的Paint事件事件处理理/GraphicsPath表示一系列相互连接的直线和曲线表示一系列相互连接的直线和曲线 System.Drawing.Drawing2D.GraphicsPath shape=new System.Drawing.Drawing2D.GraphicsPath();shape.AddEllipse(0,0,this.Width,this.Height);/Control.Region 属性获取或设置与控件关联的窗口区域。属性获取或设置与控件关联的窗口区域。this.Region=new System.Drawing.Region(shape);2添加窗体的Paint事件处理/GraphicsPath表示创建不规则窗体创建不规则窗体DEMO23创建不规则窗体DEMO23步步骤1(1)创建创建Windows 应用程序项目,将其属性设应用程序项目,将其属性设置为移除标题栏并使用位图作为窗体背景。置为移除标题栏并使用位图作为窗体背景。BackgroundImage属性属性:位图位图FormBorderStyle属性属性:NoneTransparencyKey属性属性:设为要隐藏的颜色设为要隐藏的颜色4步骤1(1)创建Windows 应用程序项目,将其属性设4步步骤2(2)输入重新创建标题栏所提供功能的代码,输入重新创建标题栏所提供功能的代码,例如移动和关闭窗体。例如移动和关闭窗体。为窗体添加数据成员为窗体添加数据成员,记录鼠标状态记录鼠标状态:private Point mouseOffset;private bool isMouseDown=false;5步骤2(2)输入重新创建标题栏所提供功能的代码,5步步骤3(3)添加窗体的添加窗体的MouseDown事件处理事件处理:private void Form1_MouseDown(object sender,MouseEventArgs e)int xOffset;int yOffset;if(e.Button=MouseButtons.Left)/计算和窗体左上角的偏离量计算和窗体左上角的偏离量 xOffset=-e.X-SystemInformation.FrameBorderSize.Width;yOffset=-e.Y-SystemInformation.CaptionHeight-SystemInformation.FrameBorderSize.Height;mouseOffset=new Point(xOffset,yOffset);isMouseDown=true;6步骤3(3)添加窗体的MouseDown事件处理:6添加窗体的添加窗体的MouseMove事件事件处理理private void Form1_MouseMove(object sender,MouseEventArgs e)if(isMouseDown)/获取鼠标光标的位置(以屏幕坐标表示)。获取鼠标光标的位置(以屏幕坐标表示)。Point mousePos=Control.MousePosition;/将此将此 Point 平移指定的量。平移指定的量。mousePos.Offset(mouseOffset.X,mouseOffset.Y);Location=mousePos;7添加窗体的MouseMove事件处理private void添加窗体的添加窗体的MouseUp事件事件处理理private void Form1_MouseUp(object sender,MouseEventArgs e)if(e.Button=MouseButtons.Left)isMouseDown=false;8添加窗体的MouseUp事件处理private void FMaskedTextBoxMaskedTextBox控件控件DEMO39MaskedTextBox控件DEMO39 MaskedTextBoxMaskedTextBox控件控件(P51)(P51)MaskedTextBoxMaskedTextBox控件,也叫掩码文本框。它的主要作用是控控件,也叫掩码文本框。它的主要作用是控制输入文本的格式。如果输入的内容不满足规定的格式,则控制输入文本的格式。如果输入的内容不满足规定的格式,则控件不会接收该输入。件不会接收该输入。如下图是从工具箱向窗体拖动该控件的如下图是从工具箱向窗体拖动该控件的图示。图示。10 MaskedTextBox控件(P51)Mask1 1、常用的基本属性、常用的基本属性(1 1)InsertKeyModeInsertKeyMode属性:指示向掩码文本框输入字符时的属性:指示向掩码文本框输入字符时的输入模式,其属性值有:输入模式,其属性值有:DefaultDefault、InsertInsert和和Overwrite3Overwrite3种。当种。当属性值为属性值为DefaultDefault时,表示输入模式由当时键盘的插入时,表示输入模式由当时键盘的插入/改写状改写状态决定,如果输入时键盘处于改写模式,则会改写输入处的字态决定,如果输入时键盘处于改写模式,则会改写输入处的字符,否则为插入字符。当属性值为符,否则为插入字符。当属性值为InsertInsert时,即使键盘的时,即使键盘的InsIns键键被按下,也不会以改写方式输入字符。当属性值为被按下,也不会以改写方式输入字符。当属性值为OverwriteOverwrite时,时,则任何时候都是以改写方式输入字符。则任何时候都是以改写方式输入字符。111、常用的基本属性11(2 2)PromptCharPromptChar属性:指定作为占位符的字符,用属性:指定作为占位符的字符,用于指示用户需要输入的字符长度,默认的占位符为下于指示用户需要输入的字符长度,默认的占位符为下划线划线“_”“_”,需要修改时可以直接在属性后的空白处输,需要修改时可以直接在属性后的空白处输入指定字符。入指定字符。12(2)PromptChar属性:指定作为占位符的字符,用(3 3)MaskMask属性:设置当前掩码文本框输入字符属性:设置当前掩码文本框输入字符的格式。单击的格式。单击MaskMask属性后的属性后的按钮,按钮,13(3)Mask属性:设置当前掩码文本框输入字符的格式。单弹出如图所示的窗口,其中是一些设置好的时间、弹出如图所示的窗口,其中是一些设置好的时间、电话号码的格式,若这些格式都不能满足设计要求,电话号码的格式,若这些格式都不能满足设计要求,也可以选择自定义格式,或者在也可以选择自定义格式,或者在MaskMask属性后的空属性后的空白处直接输入自定义格式。白处直接输入自定义格式。14弹出如图所示的窗口,其中是一些设置好的时间、电话号码的格式,1515 自定义输入格式时,可以使用掩码和分自定义输入格式时,可以使用掩码和分隔符两类符号。掩码用于限制用户可输入的隔符两类符号。掩码用于限制用户可输入的符号类型,程序运行时掩码以占位符显示;符号类型,程序运行时掩码以占位符显示;而分隔符可作为输入字符之间的关联符,分而分隔符可作为输入字符之间的关联符,分隔符显示在掩码文本框中,且不可修改。表隔符显示在掩码文本框中,且不可修改。表5-35-3列出了常用掩码和分隔符的含义。列出了常用掩码和分隔符的含义。16 自定义输入格式时,可以使用掩码和分隔符两类符号。掩码表表5-3 5-3 常用的掩码和分隔符常用的掩码和分隔符符号符号含含义掩掩码0 0数字数字“0”“9”“0”“9”9 9数字数字“0”“9”“0”“9”、空格(、空格(SpaceSpace)#数字数字“0”“9”“0”“9”、空格(、空格(SpaceSpace)、)、“+”“+”、“-”“-”L L数字数字“a”“z”“a”“z”、“A”“Z”“A”“Z”&键盘可可输入字符入字符A A、a a字母与数字字母与数字 强强制将其后制将其后输入的字母入的字母转换为大写大写分隔符分隔符.小数分隔符,即小数点小数分隔符,即小数点-连接分隔符接分隔符,数字分隔符数字分隔符:时间分隔符分隔符/日期分隔符日期分隔符$货币符号符号17表5-3 常用的掩码和分掩码不能保证用户输入一定会表示给定类型的有效掩码不能保证用户输入一定会表示给定类型的有效值,例如,输入的年龄值可能为值,例如,输入的年龄值可能为-9。通过将值的。通过将值的类型的实例赋给类型的实例赋给 ValidatingType 属性,可以确属性,可以确保用户输入表示一个有效值。通过监视保用户输入表示一个有效值。通过监视 TypeValidationCompleted 事件,可以检测事件,可以检测当当 MaskedTextBox 包含无效值时,用户是否包含无效值时,用户是否将焦点从该控件移开。如果键入验证成功,可以通将焦点从该控件移开。如果键入验证成功,可以通过过 TypeValidationEventArgs 参数的参数的 ReturnValue 属性使用表示该值的对象。属性使用表示该值的对象。18掩码不能保证用户输入一定会表示给定类型的有效值,例如,输入的(4 4)TextMaskFormatTextMaskFormat属性:表示由掩码文本框属性:表示由掩码文本框的的TextText属性得到的字符串中是否包含占位符、分属性得到的字符串中是否包含占位符、分隔符的内容。该属性共有隔符的内容。该属性共有4 4个选项:个选项:ExcludePromptAndLiteralsExcludePromptAndLiterals表示占位符和分隔符均表示占位符和分隔符均不包含;不包含;IncludePromptIncludePrompt表示仅包含占位符;表示仅包含占位符;IncludeLiteralsIncludeLiterals表示仅包含分隔符;表示仅包含分隔符;IncludePromptAndLiteralsIncludePromptAndLiterals表示占位符和分隔符均表示占位符和分隔符均包含。包含。19(4)TextMaskFormat属性:表示由掩码文本框(5 5)HidePromptOnLeaveHidePromptOnLeave属性:属性:指示若当前控件未处指示若当前控件未处于活动状态时,是否显示占位苻,若属性值为于活动状态时,是否显示占位苻,若属性值为truetrue时,时,表示当控件不是活动状态,隐藏占位苻;若属性值为表示当控件不是活动状态,隐藏占位苻;若属性值为falsefalse时,即使控件不是活动状态,仍然显示占位符。时,即使控件不是活动状态,仍然显示占位符。20(5)HidePromptOnLeave属性:指示若当前控件2 2、常用的基本事件常用的基本事件 MaskInputRejected MaskInputRejected事件:当输入字符不符合掩码事件:当输入字符不符合掩码要求时触发的操作。要求时触发的操作。例例1 1 简单的用户信息登录界面示例。简单的用户信息登录界面示例。(1 1)新建一个名为新建一个名为MaskedTextBoxExampleMaskedTextBoxExample的的WindowsWindows应用程序项目,在应用程序项目,在 解决方案资源管理器解决方案资源管理器 中中Form1.csForm1.cs重命名为重命名为FormMaskedTextBox.csFormMaskedTextBox.cs。如下各。如下各图所示。图所示。212、常用的基本事件例1 简单的用户信息登录界面示例。2向向FormForm窗体中添加窗体中添加5 5个个MaskedTextBoxMaskedTextBox控件、控件、1 1个个ButtonButton控件和控件和7 7个个LabelLabel控控件,窗体中各控件的属性、布局及显示效果如图所示。件,窗体中各控件的属性、布局及显示效果如图所示。22向Form窗体中添加5个MaskedTextBox控件、1个在在FormMaskedTextBoxFormMaskedTextBox类中直接编写类中直接编写MyMaskInputRejectedMyMaskInputRejected事件和事件和MyMaskInputResetMyMaskInputReset事件事件。具体代码为:具体代码为:/若输入不符合要求,则以红色字体显示输入信息若输入不符合要求,则以红色字体显示输入信息 private void MyMaskInputRejected(object sender,MaskInputRejectedEventArgs e)(MaskedTextBox)sender).ForeColor=Color.Red;/重新输入时,以改写方式输入,并恢复正常的字体颜色重新输入时,以改写方式输入,并恢复正常的字体颜色 private void MyMaskInputReset(object sender,KeyEventArgs e)(MaskedTextBox)sender).InsertKeyMode=InsertKeyMode.Overwrite;(MaskedTextBox)sender).ForeColor=Color.FromName(Window Text);23在FormMaskedTextBox类中直接编写MyMask 为所有的为所有的MaskedTextBox的的MaskInputRejected事件指定事件处理函数事件指定事件处理函数:MyMaskInputRejected 为所有的为所有的MaskedTextBox的的KeyDown事事件指定事件处理函数件指定事件处理函数:MyMaskInputReset24 为所有的MaskedTextBox的MaskInpu添加添加maskedTextBoxBirthdaymaskedTextBoxBirthday的的TypeValidationCompletedTypeValidationCompleted事件代码。事件代码。将该事件代码补充完整如下:将该事件代码补充完整如下:private void maskedTextBoxBirthday_TypeValidationCompleted(object sender,TypeValidationEventArgs e)if(!e.IsValidInput)MessageBox.Show(您输入的日期不正确!您输入的日期不正确!);(MaskedTextBox)sender).Focus();(MaskedTextBox)sender).InsertKeyMode=InsertKeyMode.Overwrite;25添加maskedTextBoxBirthday的TypeVaRadioButton实例实例DEMO426RadioButton实例DEMO426添加添加RadioButton的的CheckedChanged事件事件处理理private void rdo_CheckedChanged(object sender,EventArgs e)RadioButton btn=(RadioButton)sender;if(checkBox1.Checked)switch(btn.Text)case 红色红色:pictureBox1.BackColor=Color.Red;break;case 蓝色蓝色:pictureBox1.BackColor=Color.Blue;break;case 黑色黑色:.27添加RadioButton的CheckedChanged事添加添加CheckBox的的CheckedChanged事件事件处理理private void checkBox1_CheckedChanged(object sender,EventArgs e)if(checkBox1.Checked)foreach(Control ctl in this.groupBox1.Controls)if(ctl is RadioButton)RadioButton rdo=(RadioButton)ctl;if(rdo.Checked)this.rdo_CheckedChanged(rdo,null);break;else pictureBox1.BackColor=this.BackColor;28添加CheckBox的CheckedChanged事件处理VScrollBar实例实例DEMO429VScrollBar实例DEMO429提示提示(1)设置设置VScrollBar的的LargeChange值为值为1;30提示(1)设置VScrollBar的LargeChange值添加添加VSCrollBar的的ValueChanged事件事件处理理private void vScrollBar1_ValueChanged(object sender,EventArgs e)int r,g,b;r=vScrRed.Value;g=vScrGreen.Value;b=vScrBlue.Value;Color c=Color.FromArgb(r,g,b);pictureBox1.BackColor=c;lblRed.Text =r.ToString();lblGreen.Text =g.ToString();lblBlue.Text =b.ToString();Invalidate(false);31添加VSCrollBar的ValueChanged事件处理添加添加CheckBox的的CheckedChanged事件事件处理理private void checkBox1_CheckedChanged(object sender,EventArgs e)if(checkBox1.Checked)foreach(Control ctl in this.groupBox1.Controls)if(ctl is RadioButton)RadioButton rdo=(RadioButton)ctl;if(rdo.Checked)this.rdo_CheckedChanged(rdo,null);break;else pictureBox1.BackColor=this.BackColor;32添加CheckBox的CheckedChanged事件处理资源管理器实例资源管理器实例DEMO533资源管理器实例DEMO533提示提示(1)设置设置ListView的的View值为值为Details;(2)添加命名空间添加命名空间:using System.IO;/添加引用,以使用文件和目录类添加引用,以使用文件和目录类34提示(1)设置ListView的View值为Details;初始化左面的初始化左面的TreeView显示示public void RefreshTree()/Turn off visual updating and clear tree.DirectoryTreeView.BeginUpdate();DirectoryTreeView.Nodes.Clear();/Make disk drives the root nodes.string astrDrives=Directory.GetLogicalDrives();foreach(string str in astrDrives)TreeNode tnDrive=new TreeNode(str,0,0);/ImageIndex=0;SelectedImageIndex=0DirectoryTreeView.Nodes.Add(tnDrive);AddDirectories(tnDrive);if(str=C:)DirectoryTreeView.SelectedNode=tnDrive;DirectoryTreeView.EndUpdate();35初始化左面的TreeView显示public void Re添加各个添加各个驱动器器节点点void AddDirectories(TreeNode tn)tn.Nodes.Clear();string strPath=tn.FullPath;DirectoryInfo dirinfo=new DirectoryInfo(strPath);DirectoryInfo adirinfo;try adirinfo=dirinfo.GetDirectories();catch return;foreach(DirectoryInfo di in adirinfo)TreeNode tnDir=new TreeNode(di.Name,1,2);tn.Nodes.Add(tnDir);36添加各个驱动器节点void AddDirectories(T添加添加TreeView的的BeforeExpand响响应事件,事件,即在即在节点打开前点打开前执行行private void DirectoryTreeView_BeforeExpand(object sender,System.Windows.Forms.TreeViewCancelEventArgs e)DirectoryTreeView.BeginUpdate();foreach(TreeNode tn in e.Node.Nodes)AddDirectories(tn);DirectoryTreeView.EndUpdate();37添加TreeView的BeforeExpand响应事件,即在填充填充ListView,显示文件信息示文件信息public void ShowFiles(string strDirectory)/Save directory name as field.this.strDirectory=strDirectory;FileListView.Items.Clear();DirectoryInfo dirinfo=new DirectoryInfo(strDirectory);FileInfo afileinfo;tryafileinfo=dirinfo.GetFiles();catchreturn;38填充ListView,显示文件信息public void Sforeach(FileInfo fi in afileinfo)/Create ListViewItem.ListViewItem lvi=new ListViewItem(fi.Name);/Assign ImageIndex based on filename extension.if(Path.GetExtension(fi.Name).ToUpper()=.EXE)lvi.ImageIndex=4;elselvi.ImageIndex=3;/Add file length and modified time sub-items.lvi.SubItems.Add(fi.Length.ToString(N0);/Add attribute subitem.string strAttr=;if(fi.Attributes&FileAttributes.Archive)!=0)strAttr+=A;if(fi.Attributes&FileAttributes.Hidden)!=0)strAttr+=H;3939if(fi.Attributes&FileAttributes.ReadOnly)!=0)strAttr+=R;if(fi.Attributes&FileAttributes.System)!=0)strAttr+=S;lvi.SubItems.Add(strAttr);lvi.SubItems.Add(fi.LastWriteTime.ToString();/Add completed ListViewItem to FileListView.FileListView.Items.Add(lvi);40if(fi.Attributes&FileAttr添加添加TreeView的的BeforeExpand响响应事件,事件,即在即在节点打开前点打开前执行行private void DirectoryTreeView_BeforeExpand(object sender,System.Windows.Forms.TreeViewCancelEventArgs e)DirectoryTreeView.BeginUpdate();foreach(TreeNode tn in e.Node.Nodes)AddDirectories(tn);DirectoryTreeView.EndUpdate();41添加TreeView的BeforeExpand响应事件,即在添加添加DirectoryTreeView的的AfterSelect响响应事件,即在事件,即在节点被点被选择后后执行行private void DirectoryTreeView_AfterSelect(object sender,System.Windows.Forms.TreeViewEventArgs e)ShowFiles(e.Node.FullPath);42添加DirectoryTreeView的AfterSelec后台线程实例后台线程实例DEMO643后台线程实例DEMO643提示提示(1)添加控件添加控件BackgroundWorker;(2)添加添加Bool flag=false;表示是否画图表示是否画图;(3)添加添加 Random random=new Random();用来生成随机画图时的坐标和颜色用来生成随机画图时的坐标和颜色;44提示(1)添加控件BackgroundWorker;44添加添加BackgroundWorker的的DoWork响响应事件事件 private void backgroundWorker1_DoWork(object sender,DoWorkEventArgs e)Point pt=new Point2;Graphics graphics=pictureBox1.CreateGraphics();Color c;while(flag)pt0=new Point(random.Next(pictureBox1.Width),random.Next(pictureBox1.Height);pt1=new Point(random.Next(pictureBox1.Width),random.Next(pictureBox1.Height);c=Color.FromArgb(random.Next(255),random.Next(255),random.Next(255);graphics.DrawLine(new Pen(c,3),pt0,pt1);45添加BackgroundWorker的DoWork响应事件 添加添加Button的的Click响响应事件事件 private void button1_Click(object sender,EventArgs e)this.flag=!this.flag;if(this.flag)button1.Text=停止停止;this.backgroundWorker1.RunWorkerAsync();while(this.backgroundWorker1.IsBusy)Application.DoEvents();else button1.Text=开始开始;46添加Button的Click响应事件 private voi
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!