C#控件介绍及用法(详细版)_第1页
C#控件介绍及用法(详细版)_第2页
C#控件介绍及用法(详细版)_第3页
C#控件介绍及用法(详细版)_第4页
C#控件介绍及用法(详细版)_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、C#其实很好学,只要你弄清楚控件。控件控件是视窗交互的工具。控件是一种特殊的类,所有控件都继承自System.Windows.Forms.Control类。这里Control就叫做控件的基类,控件就是Control的派生类。一个类从基类继承,就拥有基类的所有成员(包括:变量(亦称字段),属性,函数(函数亦称方法),事件,运算符)。类之间通过继承关系保证了派生类拥有需要的方法或字段。所以Control的成员就是控件的通性。这里列出了Control的常用成员:名称类别用途Control构造函数用于初始化一个控件Dispose方法释放由Control使用的所有资源Equals方法判断控件是否相同Fo

2、cus方法为控件设置输入焦点GetContainerControl方法返回容器控件GetType方法获取控件类型RaiseDragEvent方法引发适当的拖动事件。RaiseKeyEvent方法引发适当的键事件。RaiseMouseEvent方法引发适当的鼠标事件。RaisePaintEvent方法引发适当的绘画事件。Refresh方法强制重绘自己和任何子控件ResetBackColor方法将背景色重置为其默认值。ResetCursor方法重置光标ResetFont方法重置字体ResetForeColor方法重置前景色ResetImeMode方法重置输入法Select方法激活控件Show方法向

3、用户显示控件ToString方法控件类名转为字符串Update方法使控件重绘其无效区域AllowDrop属性指示控件是否接受拖放数据BackColor属性获取或设置控件的背景色。BackgroundImage属性获取或设置在控件中显示的背景图像CanFocus属性获取一个值,该值指示控件是否可以接收焦点。Controls属性获取包含在控件内的控件的集合Cursor属性获取或设置当鼠标指针位于控件上时显示的光标Dock属性获取或设置哪些控件边框停靠到其父控件并确定控件如何随其父级一起调整大小。DoubleBuffered属性该值指示此控件是否应使用辅助缓冲区重绘其图面,以减少或避免闪烁Enabl

4、ed属性该值指示控件是否可以对用户交互作出响应Focused属性该值指示控件是否有输入焦点Font属性获取或设置控件显示的文字的字体ForeColor属性获取或设置控件的前景色Height属性获取或设置控件的高度Location属性获取或设置该控件的左上角相对于其容器的左上角的坐标Margin属性获取或设置控件之间的空间MousePosition静态属性获取鼠标光标的位置(以屏幕坐标表示)。Name属性获取或设置控件的名称Parent属性获取或设置控件的父容器Size属性获取或设置控件的高度和宽度Tag属性获取或设置包含有关控件的数据的对象Text属性获取或设置与此控件关联的文本Visible

5、属性该值指示是否显示该控件Width属性获取或设置控件的宽度BackColorChanged事件当BackColor属性的值更改时发生BackgroundImageChanged事件当BackgroundImage属性的值更改时发生Click事件在单击控件时发生DoubleClick事件在双击控件时发生DragDrop事件在完成拖放操作时发生GotFocus事件在控件接收焦点时发生KeyPress事件在控件有焦点的情况下按下键时发生LocationChanged事件在Location属性值更改后发生LostFocus事件当控件失去焦点时发生MouseClick事件在鼠标单击该控件时发生Mous

6、eEnter事件在鼠标指针进入控件时发生。MouseHover事件在鼠标指针停放在控件上时发生。MouseLeave事件在鼠标指针离开控件时发生。MouseMove事件在鼠标指针移到控件上时发生MouseUp事件在鼠标指针在控件上并释放鼠标键时发生MouseWheel事件在移动鼠标滚轮并且控件有焦点时发生Paint事件在重绘控件时发生Resize事件在调整控件大小时发生TextChanged事件在Text属性值更改时发生以上是最常用的成员,便于查找,完整列表参考/zh-cn/library/system.windows.forms.control

7、_members.aspx静态文本控件Label: 表示控件的文本标签,并提供对访问键的支持。它是最简单的控件,用于显示文字,其实它不一定是静态的,显示的文字可以随时通过Text属性更改。常用的属性是Font、BackColor、ForeColor、Text、Location、Size、Visible。超链接文本控件LinkLabel: Windows 窗体LinkLabel控件使您能够向 Windows 窗体应用程序添加 Web 样式的链接。一切可以使用Label控件的地方都可以使用LinkLabel控件;还可以将文本的一部分设置为指向某个对象或网页的链接。与Label类似,提供了类似超链接

8、的文字样式,Label也可以设置Click事件,但LinkLabel更容易让人发现它被单击有不同的作用(由于它像超链接的样子)。也可以用作选项,【例】: 新建工程,设计界面如图: 修改LinkLabel控件名字:linkOption 选择 修改(Name)属性 改为linkOption P.S.以后就用linkOption表示这个控件,在C#代码中控件实例实质上是一个变量,变量类型就是控件的类。这就是这个控件的变量名。由于默认的名称linkLabel1没有实际意义,编程时通常先修改其名字,使其好记。由于是变量名所以命名规则与普通变量没有区别,由“_”或英文字母开头都是合法的,不允许重名。但通常

9、许多控件共同运作来完成一件具体的事,所以通常习惯在控件前面加上小写的类型简称,后跟首字母大写的名称。这是一条基本技巧,以后不再重复介绍。 双击linkOption编辑代码private void linkOption_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) linkOption.Text = linkOption.Text = On ? Off : On; 运行 多次单击linkOption查看效果。这里使用了条件运算符来实现这个功能。文本框TextBox:表示 Windows 文本框控件。文本框是提供用户数据输入

10、输出的控件。【例】:求三角形面积 编辑界面如图 分别命名为txtA、txtB、txtC、txtArea 直接开始编辑代码: 新建函数private void textBox_Change(object sender, EventArgs e) double a = 0, b = 0, c = 0, p = 0; try a = double.Parse(txtA.Text != ? txtA.Text : 0); b = double.Parse(txtB.Text != ? txtB.Text : 0); c = double.Parse(txtC.Text != ? txtC.Text :

11、 0); p = (a + b + c) / 2; txtArea.Text = Math.Sqrt(p * (p - a) * (p - b) * (p - c).ToString(); catch (FormatException) txtArea.Text = 类型错误; 设置txtA、txtB、txtC的Click事件处理函数为textBox_Change: 按住Ctrl分别单击txtA、txtB、txtC以同时选择这三个控件 查看事件列表 找到TextChange事件 选择textBox_Change 运行 输入一些数字查看运行情况。还可以修改器PasswordChar属性使其变成密

12、码框,这个属性的类型是char,只可以输入一个字符,用来代替原来显示文字的位置,令其为*或#看看效果吧: 编辑界面如图 设置其PasswordChar属性,输入一个字符 运行 输入一些文字看看效果 设置为其他值看看:如#、X、。P.S. 这只是表面的现象,不影响Text属性的取值,仍然用Text属性取出或写入字符串。也可以修改其Dock属性为Top或Bottom,文本框会立即保持与窗口同宽: 编辑界面如图 设置Dock属性为Top: 运行 改变窗体大小查看效果。P.S. 你可能觉得这与窗体贴的过分地紧了,最好留一点边距,这也有办法,只需修改窗体的Padding属性,改为8, 8, 8, 8试试

13、。文本框还有Enable、ReadOnly、Visible属性,分别表示是否禁用文本框(变灰)、是否只读(用户不能修改其内容)和是否可见(设为false就不显示)是一些常用属性,其他控件也有,以后不再重复介绍。Enable=false的效果还有一个是MultiLine属性,使文本框可以是多行的将其设为true效果:可以访问Lines属性修改其内容。这时WordWrap属性还可指定它是否自动换行显示WordWrap=trueWordWrap=false这样的话显示不全,可更改ScrollBars属性,添加合适的滚动ScrollBars=HorizontalScrollBars=VerticalS

14、crollBars=Both按钮Button:表示一个响应ButtonBaseHYPERLINK /zh-cn/library/system.windows.controls.primitives.buttonbase.click.aspx.HYPERLINK /zh-cn/library/system.windows.controls.primitives.buttonbase.click.aspxClick事件的 Windows 按钮控件。通常在鼠标对其操作(单击、双击等)时产生一些事件,并处理

15、。【例】:可对上述示例加以修改: 添加按钮如图 按钮命名为btnCalc 令btnCalc.Click=textbox_Change 清空txtA、txtB、txtC的Click处理函数 查看代码找到textbox_Change 选中函数名 右击 鼠标指向“重构(R)”- “重命名(R)”,并单击。 改名为Calc_Click 确定 应用 运行 输入数并单击“Calculate”,查看效果P.S. 更改已经定义好的函数名、变量名等标识符的名称请使用“重构-重命名”,它将自动为所有的标识符引用改名以匹配新的名字。这里的改名不是必要步骤(5-11步),但为了使实例更直观,避免混淆。复选框Check

16、Box控件: 表示 WindowsCheckBox。它经常用于选项,使用非常简单,只需设定Text(显示的文本),根据需要获取或设置Checked值就可以了,这个属性表示是否勾选,为bool型。【例】闹钟选项设置 编辑界面如图 使复选框的名字依次为chkSun、chkMon、chkTue、chkWed、chkThu、chkFri、chkSat 使按钮名字依次为btnApply、btnCancel 添加新的CheckBox数组private CheckBox checkBoxes; 修改WinForm构造函数:public Form1() InitializeComponent(); check

17、Boxes = new CheckBox this.chkSun, this.chkMon, this.chkTue, this.chkWed, this.chkThu, this.chkFri, this.chkSat ; 双击Apply编辑Click事件处理函数private void btnApply_Click(object sender, EventArgs e) string str = Youve selected: ; foreach (CheckBox cb in checkBoxes) if ( cb.Checked) str += nt + cb.Text; if (st

18、r = Youve selected: ) str += Nothing; MessageBox.Show(str); 双击Cancel编辑Click事件处理函数private void btnCancel_Click(object sender, EventArgs e) this.Close(); 修改WinForm属性 运行查看效果P.S. 第8步设置了Winform的确定和取消按钮(即AcceptButton和CancelButton属性)可以看到按钮的视图效果会有所改变Apply按钮多了个蓝框,表示默认按钮,此时按Enter或Esc分别相当于按下了这两个按钮。这两个属性是专门为对话框

19、按钮设置的简便方式。这里建立了复选框的数组,用foreach语句遍历。注意:对象数组与数值数组有所不同,如果用已经定义的对象来初始化数组,那么元素与对应的对象完全相同(共用了一块内存区)任一一个的改动,会影响另一个的值。数值数组则仅仅把数值传了过去。两个对象的等于或不等运算是比较他们的内存地址是否相同,而不是每一个属性是否相同。对对象的操作需要多加以考虑复选框还有第三种“待定”的状态,以前叫三态复选框,三种状态是通过CheckState属性获得的:效果Checked属性CheckState属性TrueCheckedTrueIndeterminateFalseUnchecked单选框RadioB

20、utton: 当与其他RadioButton控件成对出现时,使用户能够从一组选项中选择一个选项单选框相对复选框较复杂一些,因为用户只能选一个,要把前一个选择的清除;如果有几组单选框,就更复杂。这就需要一个范围来约束单选框的行为,如果只有一组,它可以正常工作,WinForm会自动清除前一个选项。如果有多组,就需要容器控件来区分组别。其中GroupBox是比较常用的。如图:这样不需要代码来控制其行为。由于只有一个选项,所以一般用主动传值的方式。【例】选择国籍 编辑界面如图 单选框无需改名,按钮命名为btnOK、btnCancel 添加全程变量private string str = Nothing

21、; 创建新函数private void radio_Click(object sender, EventArgs e) str = (RadioButton)sender).Text; 编辑OK按钮Click事件:private void btnOK_Click(object sender, EventArgs e) MessageBox.Show(Youve selected: +str); 编辑Cancel按钮Click事件:private void btnCancel_Click(object sender, EventArgs e) this.Close(); 选择全部的单选框 编辑C

22、lick事件 运行看看效果数字框NumbericUpDown:这是一种特殊的输入框,专门用来输入数字,通过Value属性获得其decimal型的值。使数据的输入更加方便。右侧有两个按钮可以让数字增加或减少。【例】汇率换算 编辑界面如图 命名数字框为nudDollar和nudRMB 命名按钮btnD2R、btnR2D 编辑两个数字框的属性为如图 属性栏下方有解释所以属性的用途不再介绍。 编辑btnD2R的Click事件 private void btnD2R_Click(object sender, EventArgs e) nudRMB.Value = nudDollar.Value *(de

23、cimal)6.8352; 编辑btnR2D的Click事件 private void btnR2D_Click(object sender, EventArgs e) nudDollar.Value = nudRMB.Value / (decimal)6.8352; 运行下拉菜单ComboBox:它可使用户从一定的范围内选择一项。当有大量的选项时,单选框就不实用用了,这样做太复杂。就应该使用下拉菜单。但当只有少量选项时还是用单选框对于用户更容易操作。下拉菜单是一个集合类,下面还是给出一个选国籍的程序【例】选择国籍 编辑界面如图 下拉菜单改名comNation 找到comNation.Item

24、s属性,单击右侧按钮 输入数据(每一行作为下拉菜单的一个项,也就是集合的一个元素) 确定 双击下拉菜单进入comNation_SelectedIndexChanged函数的编辑private void comNation_SelectedIndexChanged(object sender, EventArgs e)MessageBox.Show(Youve selected: +comNation.SelectedItem.ToString(); 运行可以看到用下拉菜单更加简便,几乎不用多少代码来管理控件行为,随时取值就行了。然而下拉菜单还提供了大量的函数,可以动态的管理这些元素。图像容器P

25、ictureBox: PictureBox可以装点你的WInForm,也可以根据需要显示一些图片,让程序看起来跟动态化,互动效果更好。使用PictureBox也十分容易,主要更改其Image属性,这属性属于Image类的。一般需要从程序资源中调取图片,这个会在例子下加以介绍。【例】显示图片 拖拽出一个PictureBox控件 右击控件 单击选择图像 从项目资源文件中导入图片 单击项目资源文件单选框 单击导入 选择一张图片 打开 单击确定 图像导入成功了,可以运行看看效果看看PictureBox.Image属性这貌似是一个变量名的样子,与工程文件在同一个命名空间中。其实可以找到他。 在解决方案资

26、源管理器中找到Properties展开 打开Resources.resx(这就是资源文件),它内部是xml文件,与C#代码一起运作,这个机制就比较复杂了。可以看到刚刚添加的图片就在里面以后也可以通过这个界面来维护添加的资源,资源不仅可以是图片,也可以是声音,文字【例】在WinForm初始化时通过代码装载图片 拖拽出一个PictureBox 按前面的例子向资源文件导入一张图片(此处添加了叫apple的图片) 双击窗体进入窗体的Load事件编辑代码private void Form1_Load(object sender, EventArgs e) pictureBox1.Image = Prop

27、erties.Resources.apple; /根据实际添加图片资源名称 运行看看效果吧进度条ProgressBar: 掩码文本框MarkedTextBox: 进度条是一个使用起来十分简单的控件主要改变其Maximun、Minimun、Value属性来简单的调整外观视图。掩码文本框则是通过掩码来确定用户输入特定格式的文字。下面例子中同时用到两种控件来实现一个比较直观的定时器。【例】定时器 拖拽出一个掩码文本框、一个按钮和一个进度条 修改名字为maskText、btnSet、progressBar 设置maskText.Mask属性 选择时间格式 确定这时掩码文本框的外观已经改变: 设置pro

28、gressBar.Value属性为100,可看到进度条满格 设置progressBar.Enabled属性为False 在拖拽一个工具箱-组件- 改名timer 设置Form的AcceptButton=btnSet 添加全局变量DateTime dt = new DateTime(), st = new DateTime(); 双击btnSet以编辑Click事件private void btnSet_Click(object sender, EventArgs e) switch (btnSet.Text) case Set: try dt = (DateTime)maskText.Vali

29、dateText(); st = DateTime.Now; timer.Enabled = true; maskText.ReadOnly = true; btnSet.Text = Pause; catch progressBar.Value = 100; timer.Enabled = false; dt = new DateTime(); st = new DateTime(); maskText.ReadOnly = false; this.Text = Timer; break; case Pause: timer.Enabled = false; maskText.ReadOnl

30、y = false; btnSet.Text = Set; break; 双击timer,编辑timer.Tick事件private void timer_Tick(object sender, EventArgs e) if (dt - DateTime.Now).TotalMilliseconds = 200) progressBar.Value = (int)(dt - DateTime.Now).TotalMilliseconds / (dt - st).TotalMilliseconds) * 100); this.Text = Seconds Left: + Math.Round(

31、dt - DateTime.Now).TotalSeconds,2); else timer.Enabled = false; MessageBox.Show(Time Over!); btnSet.Text = Set; dt = new DateTime(); st = new DateTime(); progressBar.Value = 100; this.Text = Timer; 运行看看效果。P.S. 这个定时器可能会提前200ms内报时,前面有一句if (dt - DateTime.Now).TotalMilliseconds = 200)的判断,提前了200ms以提高稳定性,

32、可以减小后面的值提高定时器精度,但不建议设为0月历MonthCalendar: 这个控件提供了一个简单的月历可以通过SelectRange属性来获得选择的日期范围它可选择多个连续的日期【例】显示2010年第一季度的节气 设计界面如图 命名月历控件为calendar,静态文本控件命名为info 设置info.Visible=false 设置calendar属性如图 添加全程变量Dictionary dict = new Dictionary(); 修改Form1构造函数public Form1() InitializeComponent(); dict.Add(new DateTime(2010

33、, 1, 5), 小寒); dict.Add(new DateTime(2010, 1, 20), 大寒); dict.Add(new DateTime(2010, 2, 4), 立春); dict.Add(new DateTime(2010, 2, 19), 雨水); dict.Add(new DateTime(2010, 3, 5), 惊蛰); dict.Add(new DateTime(2010, 3, 21), 春风); 双击calendar编辑DateChanged事件private void calendar_DateChanged(object sender, DateRange

34、EventArgs e) string str = string.Empty; info.Visible = dict.TryGetValue(calendar.SelectionStart, out str); info.Text = str; 运行 更换不同的日期看看效果,选构造函数中初始化字典变量的日期会在info显示节气日期选择下拉菜单DateTimePicker: 月历是很方便的日期选择控件,不需要类型转换,也比掩码文本框更人性化,但它占程序的面积过大,这种情况下可使用日期选择下拉菜单,节省面积,需要的时候展开选择日期。他的使用方法与月历控件差不多。这个控件只可以选择一个日期。【例】

35、显示2010年第一季度的节气编辑界面如图命名日期选择下拉菜单为picker,命名静态文本控件info 添加全程变量Dictionary dict = new Dictionary(); 修改Form1构造函数public Form1() InitializeComponent(); dict.Add(new DateTime(2010, 1, 5), 小寒); dict.Add(new DateTime(2010, 1, 20), 大寒); dict.Add(new DateTime(2010, 2, 4), 立春); dict.Add(new DateTime(2010, 2, 19), 雨

36、水); dict.Add(new DateTime(2010, 3, 5), 惊蛰); dict.Add(new DateTime(2010, 3, 21), 春风); 双击picker编辑DateChanged事件private void picker_ValueChanged(object sender, EventArgs e) string str = string.Empty; info.Visible = dict.TryGetValue(picker.Value.Date, out str); info.Text = str; 运行 更换不同的日期看看效果,选构造函数中初始化字典

37、变量的日期会在info显示节气富文本编辑框RichTextBox: 这是一个比TextBox更容易显示多媒体文件的文本框。它默认就是多行文本的。用它来保存文件也非常方便。【例】笔记本 设置Form1.Padding如图(留边距) 设置Form1.TopMost如图(总在最上) 设置From1.Opacity=80%(此属性是窗体不透明度) 设置Form1.Text如图 拖拽富文本编辑框 设置其属性Dock=Fill 双击Form1编辑Load事件private void Form1_Load(object sender, EventArgs e) try richTextBox1.LoadFi

38、le(Application.StartupPath + data.rtf); catch richTextBox1.SaveFile(Application.StartupPath + data.rtf); 选中Form1 找到事件FormClosing 双击编辑此事件private void Form1_FormClosing(object sender, FormClosingEventArgs e) richTextBox1.SaveFile(Application.StartupPath + data.rtf); 运行 输入一些文字 关闭程序 再次运行,可以看到文字仍然保留在上面其原

39、因就在于它在程序关闭时创建了一个文件来保存信息。保存工程后在下面的路径可以找到这个文件项目文件夹binDebugdata.rtfP.S. 这个文件可以用写字板或Word打开这个控件可以显示多种颜色的文本,可以设定Rtf属性。这是这个文件的实际文本。【扩展】在上一个例子的基础上显示Rtf属性的变化(必须先完成上一个例子)编辑界面如图 设置richTextBox1.Dock=None 添加按钮 设置button1.Text为 &HighlightP.S. 前面&用来给首字母加下划线 添加文本框 设置textBox1.MultiLine=TrueP.S.允许多行文本 设置textBox1.WordW

40、rap=FalseP.S.禁止自动换行 设置textBox1.ReadOnly=TrueP.S.使其只读 设置textBox1.ScrollBars=BothP.S.设置滚动条 设置Form1.FormBorderStyle=FixedSingleP.S.禁止窗体改变大小 重新安排控件位置,直到上图的样子 拖拽一个Timer 设置Enable=True 双击timer1 编辑其Tick事件private void timer1_Tick(object sender, EventArgs e) textBox1.Text = richTextBox1.Rtf; 双击button1编辑Click事

41、件private void button1_Click(object sender, EventArgs e) richTextBox1.SelectionBackColor = Color.LightBlue; 运行看看效果 可以选择一定的文字,点击,同时注意下面的文本框的变化,其中的代码就记录了富文本编辑框中文本的颜色等信息。由此实现了不同颜色的显示。网页浏览器控件WebBrowser: 这个控件提供网页的浏览支持【例】简单的内嵌搜索 编辑界面如图所示 命名文本框txtKey、按钮为btnSearch、浏览器控件为browser 设置btnSearch.Text为Search 双击Form

42、1编辑代码(为browser设定主页,发生Load后导航到这个网址)private void Form1_Load(object sender, EventArgs e) browser.Navigate(); 双击btnSearch编辑Click事件private void btnSearch_Click(object sender, EventArgs e) browser.Navigate(/search?go=&form=QBLH&filt=all&qs=n&sc=1-6&q=+txtKey.Text); 运行 在tx

43、tKey输入一些文字,按旁边的按钮搜索你会发现输入中文出现乱码,这涉及到URL编码的问题可作如下修改,以支持中文【扩展】支持中文的搜索(必须完成以上步骤) 添加引用集:System.Web 在解决方案资源管理器中右击引用 点击添加引用 向下拉动滚动条,找到System.Web命名空间 点击确定 添加using指令using System.Web; 双击btnSearch修改Click事件private void btnSearch_Click(object sender, EventArgs e) browser.Navigate(/search?go=&fo

44、rm=QBLH&filt=all&qs=n&sc=1-6&q= + HttpUtility.UrlEncode(txtKey.Text); 运行 输入一些中文并搜索列表框ListBox: 列表框可以显示一列信息,可以选择。【例】计算平均数 编辑界面如图 命名文本框text、按钮btnAdd、btnClear、btnCalc、列表框list 双击btnAdd编辑代码private void btnAdd_Click(object sender, EventArgs e) if (text.Text != string.Empty) try list.Items.Add(double.Parse(

45、text.Text); catch (FormatException) text.Text = string.Empty; 双击btnCalc编辑代码private void btnCalc_Click(object sender, EventArgs e) if (list.Items.Count != 0) double sum = 0, count = 0; foreach (object o in list.Items) sum += (double)o); count+; text.Text = (sum / count).ToString(); else text.Text = s

46、tring.Empty; 双击btnClear编辑代码private void btnClear_Click(object sender, EventArgs e) list.Items.Clear(); 运行复选列表框CheckedListBox: 复选列表框与列表框相比只是在每个列表项前加了一个复选框,可以用于一些比较情况复杂的场合。【例】多个定时器 编辑界面如图 并且添加一个和定时器 命名进度条progress、按钮btnAdd和btnDel、掩码文本框mask、复选列表框chklist、定时器timer 设置timer.Interval=200 设置timer.Enable=True

47、建立新的结构public struct TimerData public DateTime StartTime; public DateTime StopTime; public TimerData(DateTime startTime, DateTime stopTime) this.StartTime = startTime; this.StopTime = stopTime; public override string ToString() double s = Math.Round(StopTime - DateTime.Now).TotalSeconds, 2); string s

48、tr=At + StopTime.TimeOfDay; if(s=60)return str+ ; Time left +(StopTime - DateTime.Now); else return str+ ; Seconds left +s; 双击btnAdd编辑Click事件private void btnAdd_Click(object sender, EventArgs e) try chklist.Items.Add(new TimerData(DateTime.Now, (DateTime)mask.ValidateText(), true); mask.ResetText();

49、 catch 双击btnDel编辑Click事件private void btnDel_Click(object sender, EventArgs e) if (chklist.SelectedItem != null) chklist.Items.Remove(chklist.SelectedItem);双击timer编辑Tick事件private void timer_Tick(object sender, EventArgs e) chklist.Refresh(); for (int i = 0; i chklist.Items.Count; i+) TimerData td = (

温馨提示

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

评论

0/150

提交评论