您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 8 基于WinForm的界面设计
第八讲基于WinForm的界面设计主要内容WinForm和WPF开发UI对比标签文本框命令按钮复选框单选按钮图形框计时器第八讲基于WinForm的界面设计主要内容列表框组合框树视图对话框菜单与工具栏其他控件布局WinForm和WPF开发UI对比WinForm开发UIWFP开发UI消息被封装成事件事件驱动UI专门的UI设计语言:XMAL数据驱动UI:数据是核心,主动;UI从属于数据,并表达数据,是被动的。【例1】实现如图所示的四个文本框和滑块之间的同步。当用户往文本框中输入数字后,滑块将显示到相应的位置;当滑块的位置被移动后,文本框中将显示相应的数字。WinForm和WPF开发UI对比(1)WinForm事件驱动UI1)四个文本框(TextBox)的TextChanged事件代码如下:WinForm和WPF开发UI对比privatevoidnumberTextBox_TextChanged(objectsender,EventArgse){TextBoxt=(TextBox)sender;intvalue=0;int.TryParse(t.Text,outvalue);if(value0){value=0;}if(value100){value=100;}numberTrackBar.Value=value;}2)滑块(TrackBar)的Scroll事件代码如下:WinForm和WPF开发UI对比privatevoidnumberTrackBar_Scroll(objectsender,EventArgse){numberTextBox1.Text=numberTextBox2.Text=numberTextBox3.Text=numberTextBox4.Text=numberTrackBar.Value.ToString();}(2)WPF数据驱动UI1)在WPF项目中创建一个Student类,作为UI的数据源:WinForm和WPF开发UI对比usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceWpfApplication3{///summary///学生类////summaryclassStudent{///summary///获取或设置学生的年龄////summarypublicintAge{get;set;}2)WPF项目的界面代码XAML如下:WinForm和WPF开发UI对比Windowx:Class=WpfApplication3.Window1xmlns=:x==滑块与文本框的同步Height=200Width=300Loaded=Window_LoadedGrid!--定义了一个网格--GridWidth=200Height=100!--定义了三列--Grid.ColumnDefinitionsColumnDefinition/ColumnDefinition/ColumnDefinition//Grid.ColumnDefinitions!--定义了三行--Grid.RowDefinitions3)WPF项目的后台代码文件:WinForm和WPF开发UI对比usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documents;usingSystem.Windows.Input;usingSystem.Windows.Media;usingSystem.Windows.Media.Imaging;usingSystem.Windows.Navigation;usingSystem.Windows.Shapes;namespaceWpfApplication3{///summary///Window1.xaml的交互逻辑标签1、标签Label的作用:显示文本信息2、常见属性:1)Text:标签显示的文本信息2)Font:设置标签的文本字体3)TextAlign:设置标签文本与控件的对齐方式文本框1、文本框TextBox的作用:接收用户输入的文本2、常见属性:MultiLine、ReadOnly、UseSystemPasswordChar3、常见方法:SetFocus4、常见事件:TextChanged、Leave命令按钮1、命令按钮Button的作用:响应用户的click事件2、常见属性:Text、FlatStyle3、常见事件:Click练习1:加法计算器练习1:加法计算器。int.TryPase(string,outint)//“求和”命令按钮的单击事件处理函数privatevoidbtnAdd_Click(objectsender,EventArgse){intintAdd1=0;intintAdd2=0;stringstrAdd1=txtAdd1.Text;stringstrAdd2=txtAdd2.Text;if(int.TryParse(strAdd1,outintAdd1)==false){MessageBox.Show(第一个操作数必须为整数);return;}if(int.TryParse(strAdd2,outintAdd2)==false){MessageBox.Show(第二个操作数必须为整数);return;}练习2:密码强度检查练习2:密码强度检查。密码强度类的定义如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Text.RegularExpressions;namespaceSecurityPasswordControl{publicenumPasswordLevel{None,//空Very_Week,//很弱Week,//弱Good,//好Strong,//强Very_Strong//极强练习3:Email地址的检查练习3:email地址检查:正则表达式//txtEmail文本框的Leave事件处理函数privatevoidtxtEmail_Leave(objectsender,EventArgse){stringRegexExpression=@\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*;stringemail=txtEmail.Text;if(Regex.IsMatch(email,RegexExpression))MessageBox.Show(合法);elseMessageBox.Show(非法);}复选框1、复选框CheckBox的作用:表示可以同时选中的多项。2、常见属性:Checked、CheckState3、常见事件:CheckedChanged练习4:设置文本的粗斜体练习4:设置文本的粗斜体异或的用法:x^y^y=x//设置粗体privatevoidchkBold_CheckedChanged(objectsender,EventArgse){lblText.Font=newFont(lblText.Font,lblText.Font.Style^FontStyle.Bold);}//设置斜体privatevoidchkItalic_CheckedChanged(objectsender,EventArgse){lblText.Font=newFont(lblText.Font,lblText.Font.Style^FontStyle.Italic);}单选按钮1、单选按钮RadioButton的作用:表示一组互斥的选项。2、常见属性:Text、Checked3、常见事件:CheckedChanged4、注意:窗体(Form)、组框(GroupBox)或面板(Panel)可以作为单选钮的逻辑组。每个组中的单选钮是互斥的,但不同组中的单选钮是相容的。图形框1、图形框PictureBox的作用:显示图形。2、常见属性:Image、SizeMode3、常见事件:Click练习5:循环浏览图片练习5:循环浏览一组图片。SizeMode的取值如何将图形作为资源嵌入到工程中?获取资源:Properties.Resources.ResourceManager.GetObject()privatestaticintpictureNum=0;//图像框对象的单击事件处理函数privatevoidpictureBox1_Click(objectsender,EventArgse){pictureNum=(pictureNum+1)%3;pictureBox1.Image=(Image)(Properties.Resources.ResourceManager.GetObject(string.Format(i{0},pictureNum)));}计时器1、计时器Timer的作用:用于每隔一段时间,执行一段代码。2、常见属性:Interval、Enabled3、常见事件:Tick练习6:设置时钟练习5:设置时钟DateTimeDateTime.Now:返回当前的日期和时间privatevoidForm1_Load(objectsender,EventArgse){timer1.Interval=1000;timer1.Enabled=true;lblTime.Text=DateTime.Now.ToString();}privatevoidtimer1_Tick(objectsender,EventArgse){lblTime.Text=DateTime.Now.ToString();}练习7:走马灯练习7:走马灯。一行文字在屏幕上从左到右循环滚动。String类中定义了通过int型下标访问每个字符的索引器。privatevoidForm1_Load(objectsender,EventArgse){timer1.Interval=2000;timer1.Enabled=true;lblTime.Text=福建农林大学欢迎您!;}privatevoidtimer1_Tick(objectsender,EventArgse){stringmessage=lblTime.Text;lblTime.Text=message.Substring(1)+message[0];列表框1、作用:让用户浏览和选择多个选项。2、常见属性:Items、SelectionMode、SelectedItem、SelectedIndex3、常见方法:GetSelected4、常见事件:SelectedIndexChanged练习8:数据项在两个列表框之间的移动练习8:数据项在两个列表框之间的移动。•ArrayList是一种动态数组,其容量可随着我们的需要自动进行扩充。privatevoidForm1_Load(objectsender,EventArgse){lstLeft.Items.Add(张三);lstLeft.Items.Add(李四);lstLeft.Items.Add(王五);lstLeft.Items.Add(赵六);lstLeft.SelectionMode=Select
本文标题:8 基于WinForm的界面设计
链接地址:https://www.777doc.com/doc-3746681 .html