C# winform 添加用户控件了时间控件TImer以后 给listbox添加数据的时候出现了函数求值需要运行所有线程

c#(winform)中ComboBox和ListBox添加项,写一个用户控件
用comboBox的数据绑定的方法很简单,建一个数据源,绑定到ComboBox上,然后指定DisplayMember和 ValueMember就可以了。但是感觉好不灵活哦,如果我要在ComboBox上再添加一项,那怎么办?Web里面有ListItem, winform里面怎么没有了?感觉真是不爽,网上找了个方法,自己添加一个ListItem类,然后add到items里面,感觉还不错,有点象web 里面的用法了,可是问题又来了,添加的第一项怎么变成类名了?不是我给它赋的名字,其他项又都没有问题。于是又查到说,“因为combobox的
Item.ADD(一个任意类型的变量),而显示的时候调用的是这个变量的ToString()方法,如果这个类没有重载ToString(),那么显示的结果就是命名空间
类名”,于是加上重载的ToString()方法,好了,至此,我终于可以很方便的来给ComboBox和ListBox添加项了。
ListItem item = new ListItem("我是值", "我是名字");
this.lbChoiceRoom.Items.Add(item);
this.lbChoiceRoom.DisplayMember = "Name";this.lbChoiceRoom.ValueMember = "ID";
using System.Collections.G
using System.L
using System.T
namespace WinListItem
/// &summary&
/// 选择项类,用于ComboBox或者ListBox添加项
/// &/summary&
public class ListItem
private string id = string.E
private string name = string.E
public ListItem(string sid, string sname)
public override string ToString()
return this.
public string ID
return this.
public string Name
return this.
this.name =
using System.Collections.G
using System.ComponentM
using System.D
using System.D
using System.L
using System.T
using System.Windows.F
namespace WinListItem
public partial class MainFrm : Form
public MainFrm()
InitializeComponent();
private void btnOk_Click(object sender, EventArgs e)
ListItem listItem = comboBox1.SelectedItem as ListI
MessageBox.Show(listItem.ID + "," + listItem.Name);
private void MainFrm_Load(object sender, EventArgs e)
//添加项,Web控件DropDownList有对应的ListItem
ListItem listItem0 = new ListItem("0", "选项零");
ListItem listItem1 = new ListItem("1", "选项一");
ListItem listItem2 = new ListItem("2", "选项二");
comboBox1.Items.Add(listItem0);
comboBox1.Items.Add(listItem1);
comboBox1.Items.Add(listItem2);
//设置默认选择项,DropDownList会默认选择第一项。
comboBox1.SelectedIndex = 0;//设置第一项为默认选择项。
comboBox1.SelectedItem = listItem1;//设置指定的项为默认选择项
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!C# 时间控件timer间隔太小而引发的问题
[问题点数:20分,结帖人w]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:7035
本版专家分:1098
本版专家分:254
本版专家分:741
本版专家分:13708
本版专家分:0
结帖率 100%
本版专家分:0
结帖率 100%
本版专家分:448722
2017年 总版技术专家分年内排行榜第十2013年 总版技术专家分年内排行榜第八
2017年2月 总版技术专家分月排行榜第三
2018年6月 .NET技术大版内专家分月排行榜第一2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2018年4月 .NET技术大版内专家分月排行榜第二2018年3月 .NET技术大版内专家分月排行榜第二2017年12月 .NET技术大版内专家分月排行榜第二2017年9月 .NET技术大版内专家分月排行榜第二2017年7月 .NET技术大版内专家分月排行榜第二2017年6月 .NET技术大版内专家分月排行榜第二2016年12月 .NET技术大版内专家分月排行榜第二2016年9月 .NET技术大版内专家分月排行榜第二2016年6月 .NET技术大版内专家分月排行榜第二2016年3月 .NET技术大版内专家分月排行榜第二2016年1月 .NET技术大版内专家分月排行榜第二2015年12月 .NET技术大版内专家分月排行榜第二2015年2月 .NET技术大版内专家分月排行榜第二2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
本版专家分:0
结帖率 100%
匿名用户不能发表回复!|
CSDN今日推荐C#窗体控件简介ListBox(需整理)
ListBox 控件
ListBox 控件又称列表框,它显示一个项目列表供用户选择。在列表框中,用户
一次可以选择一项,也可以选择多项。
1、常用属性:(1) Items属性: 用于存放列表框中的列表项,是一个集合。通过该属性,可以添加列表项、移除列表项和获得列表项的数目。(2)MultiColumn 属性:用来获取或设置一个值,该值指示ListBox是否支持多列。值为 true 时表示支持多列,值为 false 时不支持多列。当使用多列模式时,可以使控件得以显示更多可见项.(3)ColumnWidth 属性:用来获取或设置多列 ListBox控件中列的宽度。(4)SelectionMode属性:用来获取或设置在ListBox控件中选择列表项的方法。当 SelectionMode属性设置为 SelectionMode.MultiExtended 时,按下 Shift 键的同时单击鼠标或者同时按 Shift 键和箭头键之一(上箭头键、下箭头键、左箭头键和右箭头键),会将选定内容从前一选定项扩展到当前项。按 Ctrl 键的同时单击鼠标将选择或撤销选择列表中的某项;当该属性设置为 SelectionMode.MultiSimple 时,鼠标单击或按空格键将选择或撤销选择列表中的某项;该属性的默认值为SelectionMode.One,则只能选择一项。(5)SelectedIndex属性:用来获取或设置ListBox控件中当前选定项的从零开始的索引。如果未选定任何项,则返回值为1。对于只能选择一项的ListBox控件,可使用此属性确定ListBox中选定的项的索引。如果 ListBox 控件的 SelectionMode 属性设置为 SelectionMode.MultiSimple 或 SelectionMode.MultiExtended,并在该列表中选定多个项,此时应用SelectedIndices来获取选定项的索引。(6)SelectedIndices。该属性用来获取一个集合,该集合包含 ListBox 控件中所有选定项的从零开始的索引。(7)SelectedItem属性:获取或设置ListBox中的当前选定项。(8)SelectedItems属性:获取 ListBox控件中选定项的集合,通常在ListBox控件的SelectionMode属性值设置为SelectionMode.MultiSimple或SelectionMode.MultiExtended(它指示多重选择ListBox)时使用。(9)Sorted属性:获取或设置一个值,该值指示ListBox控件中的列表项是否按字母顺序排序。如果列表项按字母排序,该属性值为true;如果列表项不按字母排序,该属性值为false。默认值为false。在向已排序的 ListBox控件中添加项时,这些项会移动到排序列表中适当的位置。(10)Text 属性:该属性用来获取或搜索 ListBox 控件中当前选定项的文本。当把此属性值设置为字符串值时,ListBox 控件将在列表内搜索与指定文本匹配的项并选择该项。若在列表中选择了一项或多项,该属性将返回第一个选定项的文本。
(11)ItemsCount属性:该属性用来返回列表项的数目。
2、常用方法:(1)FindString方法:用来查找列表项中以指定字符串开始的第一个项,有两种调用格式。[格式1]:ListBox对象.FindString(s);[功能]:在“ListBox 对象”指定的列表框中查找字符串 s,如果找到则返回该项从零开始的索引;如果找不到匹配项,则返回ListBox.NoMatches。[格式2]:ListBox对象.FindString(s,n);[功能]:在 ListBox 对象指定的列表框中查找字符串 s,查找的起始项为n+1,即 n 为开始查找的前一项的索引。如果找到则返回该项从零开始的索引;如果找不到匹配项,则返回ListBox.NoMatches。注意:FindString 方式只是词语部分匹配,即要查找的字符串在列表项的开头,便认为是匹配的,如果要精确匹配,即只有在列表项与查找字符串完全一致时才认为匹配,可使用FindStringExact方法,调用格式与功能与FindString基本一致。(2)SetSelected方法:用来选中某一项或取消对某一项的选择,调用格式及功能如下。[格式]:ListBox对象.SetSelected(n,l);[功能]:如果参数 l 的值是 true,则在 ListBox 对象指定的列表框中选中索引为 n 的列表项,如果参数l 的值是 false,则索引为n 的列表项未被选中。(3)Items.Add方法:用来向列表框中增添一个列表项,调用格式及功能如下。[格式]:ListBox对象.Items.Add(s);[功能]:把参数s添加到“listBox对象”指定的列表框的列表项中。(4)Items.Insert方法:用来在列表框中指定位置插入一个列表项,调用格式及功能如下。[格式]:ListBox对象.Items.Insert(n,s);[功能]:参数n代表要插入的项的位置索引,参数 s代表要插入的项,其功能是把s插入到“listBox对象”指定的列表框的索引为n的位置处。
(5)Items.Remove方法:用来从列表框中删除一个列表项,调用格式及功能如下。
ListBox对象.Items.Remove(k);
[功能]:从 ListBox对象指定的列表框中删除列表项s。
(6)Items.Clear方法:用来清除列表框中的所有项。其调用格式如下:
ListBox对象.Items.Clear();
该方法无参数。
(7)BeginUpdate方法和EndUpdate方法:这两个方法均无参数,调用格式分别如下:
ListBox对象.BeginUpdate();
ListBox对象.EndUpdate();
这两个方法的作用是保证使用 Items.Add 方法向列表框中添加列表项时,不重绘列表框。即在向列表框添
加项之前,调用BeginUpdate方法,以防止每次向列表框中添加项时都重新
绘制 ListBox 控件。完成向列表框中添加项的任务后,再调用 EndUpdate 方法使 ListBox 控件重新绘制。
当向列表框中添加大量的列表项时,使用这种方法添加项可以防止在绘制 ListBox 时的闪烁现象。一个例
子程序如下:
publicvoidAddToMyListBox()
{listBox1.BeginUpdate();
for(intx=1;x&5000;x++)
listBox1.Items.Add("Item"+x.ToString());
listBox1.EndUpdate();
ListBox控件常用事件有Click和 SelectedIndexChanged,SelectedIndexChanged事件在列表框中改变选中项
11、ComboBox 控件
ComboBox 控件又称组合框,默认情况下,组合框分两个部分显示:顶部是一个允
许输入文本的文本框,下面的列表框则显示列表项。可以认为ComboBox就是文本框与列表框的组合,与
文本框和列表框的功能基本一致。与列表框相比,组合框不能多选,它无 SelectionMode 属性。但组合框
有一个名为DropDownStyle的属性,该属性用来设置或获取组合框的样式,组合框的各种样式, 左边的组合框能够通过文本框输入文本, 中间的组合框则不能输入文本,
只能选择列表项。
12、CheckedListBox 控件
CheckedListBox控件又称复选列表框,它扩展了ListBox控件,它几乎
能完成列表框可以完成的所有任务,并且还可以在列表项旁边显示复
选标记。两种控件间的其他差异在于,复选列表框只支持DrawMode.Normal,并且复选列表框只能有一项选定或没有任何选定。此处需要注意一点:选定的项是指
窗体上突出显示的项,已选中的项是指左边的复选框被选中的项。复选列表框的样式如图9-23所示。
除具有列表框的全部属性外,它还具有以下属性。
(1)CheckOnClick属性:获取或设置一个值,该值指示当某项被选定时
是否应切换左侧的复选框。如果立即切换选中标记,则该属性值为true;
否则为false。默认值为false。
(2)CheckedItems 属性:该属性是复选列表框中选中项的集合,只代表
处于CheckState. Checked或CheckState.Indeterminate状态的那些项。 该集
合中的索引按升序排列。
(3)CheckedIndices 属性:该属性代表选中项(处于选中状态或中间状
态的那些项)索引的集合。
PictureBox控件的使用
13、PictureBox 控件的使用
PictureBox 控件又称图片框,常用于图形设计和图像处理应用程序,在该控件中可以加载的图像文件格式
有:位图文件(.Bmp)、图标文件(.ICO)、图元文件(.wmf)、.JPEG 和.GIF 文件。下而仅介绍该控件的
常用属性和事件。
1、常用属性:
(1)Image属性:用来设置控件要显示的图像。把文件中的图像加载到图片框通常采用以下三种方式。
设计时单击Image属性,在其后将出现【…】按钮,单击该按钮将出现一个【打开】对话框,在该对话框
中找到相应的图形文件后单击【确定】按钮。产生一个Bitmap类的实例并赋值给Image属性。形式如下:
Bitmapp=newBitmap(图像文件名);
pictureBox对象名.Image=p;
通过 Image.FromFile方法直接从文件中加载。形式如下:
pictureBox对象名.Image=Image.FromFile(图像文件名);
(2)SizeMode属性:用来决定图像的显示模式。其取值有四种情况,取值及含义如表9-11所示。各种模
式下的图片显示样式如图9-24所示。
14、Timer 控件
Timer 控件又称定时器控件或计时器控件,在工具箱中的图标是 ,该控件的主要作用是按一定的
时间间隔周期性地触发一个名为Tick的事件, 因此在该事件的代码中可以放置一些需要每隔一段时间重复
执行的程序段。在程序运行时,定时器控件是不可见
1、常用属性:
(1)Enabled 属性:用来设置定时器是否正在运行。值为 true 时,定时器正在运行,值为 false 时,定时
器不在运行。
(2)Interval属性:用来设置定时器两次Tick事件发生的时间间隔,以毫秒为单位。如它的值设置为500,
则将每隔0.5秒发生一个Tick事件。
2、常用方法:
(1)Start方法:用来启动定时器。调用的一般格式如下:
Timer控件名.start();
该方法无参数。
(2)Stop方法:用来停止定时器。调用的一般格式如下:
Timer控件名.stop();
该方法无参数。
3、常用事件:
定义器控件响应的事件只有Tick,每隔Interval时间后将触发一次该事件。
15、ProgressBar控件和 TrackBar控件
1.ProgressBar控件
ProgressBar 控件又称进度条控件,它在工具栏中的图标为 ,该控件在水平栏中显示适当长度
的矩形来指示进程的进度。当执行进程时,进度条用系统突出显示颜色在水平栏中从左向右进行填充。进
程完成时,进度栏被填满。当某进程运行时间较长时,如果没有视觉提示,用户可能会认为应用程序不响
应,通过在应用程序中使用进度条,就可以告诉用户应用程序正在执行冗长的任务且应用程序仍在响应。
ProgressBar控件的常用属性如下。
(1)Maximum属性:用来设置或返回进度条能够显示的最大值,默认值为100。
(2)Minimum属性:用来设置或返回进度条能够显示的最小值,默认值为0。
(3)Value属性:用来设置或返回进度条的当前位置。
(4)Step属性:用来设置或返回一个值,该值用来决定每次调用PerformStep 方法时, Value属性增加的
幅度。例如,如果要复制一组文件,则可将 Step 属性的值设置为 1,并将 Maximum 属性的值设置为要复
制的文件总数。在复制每个文件时,可以调用PerformStep方法按Step属性的值增加进度栏。
ProgressBar控件的常用方法如下。
(1)Increment方法:用来按指定的数量增加进度条的值,调用的一般格式如下:
progressBar对象.Increment(n);
其功能是把“progressBar对象”指定的进度条对象的Value属性值增加n,n为整数。调用该方法之后,若
Value属性大于Maximum属性的值,则 Value属性值就是Maximum值,若Value属性小于Minimum属性
值,则 Value属性值就是Minimum值。
(2)PerformStep方法:用来按step属性值来增加进度条的Value属性值,调用的一般格式如下:
progressBar对象.PerformStep();
该方法无参数。例如,下列程序段是一个显示复制多个文件的进度的进度条使用方法。
privatevoidCopyWithProgress(string[]filenames)
{pBar1.Visible=
pBar1.Minimum=1;
pBar1.Maximum=filenames.L
pBar1.Value=1;
pBar1.Step=1;
for(intx=1;x&=filenames.Lx++)
{if(CopyFile(filenames[x-1])==true)
pBar1.PerformStep();
ProgressBar控件能响应很多事件,但一般很少使用。
2.TrackBar控件
TrackBar 控件又称滑块控件、跟踪条控件,它在工具箱中的图标是“ ” 。该控件主要用于在
大量信息中进行浏览,或用于以可视形式调整数字设置。TrackBar控件有两部分:缩略图(也称为滑块)
和刻度线。缩略图是可以调整的部分,其位置与 Value 属性相对应。刻度线是按规则间隔分隔的可视化指
示符。跟踪条控件可以按指定的增量移动,并且可以水平或者垂直排列。
TrackBar控件的常用属性如下。
(1)Maximum属性:用来获取或设置TrackBar控件可表示的范围上限,即最大值。
(2)Minimum属性:用来获取或设置TrackBar控件可表示的范围下限,即最小值。
(3)Orientation属性:用来获取或设置一个值,该值指示跟踪条是在水平方向还是在垂
(4)LargeChange属性:用来获取或设置一个值,该值指示当滑块长距离移动时应为Value属性中加上或
减去的值。
(5)SmallChange属性:用来获取或设置当滑块短距离移动时对Value属性进行增减的值。
(6)Value属性:用来获取或设置滑块在跟踪条控件上的当前位置的值。
(7)TickFrequency属性:用来获取或设置一个值,该值指定控件上绘制的刻度之间的增量。
(8)TickStyle 属性:用来获取或设置一个值,该值指示如何显示跟踪条上的刻度线。TrackBar控件的常用事件是ValueChanged,该事件在TrackBar控件的Value属性值改变时发生。
16、HScrollBar 控件和 VScrollBar控件的使用
滚动条(ScrollBar)是大部分Windows应用程序中都具有的控件,是 Windows界面的
一种常见元素,通常分为水平滚动条(HscrollBar)和垂直滚动条(VscrollBar)。HScrollBar
在工具箱中的图标是,VScrollBar控件在工具箱中的图标是。这两
个控件主要用于在应用程序或控件中水平或垂直滚动,以方便在较长的列表中或大量信息中
1、常用属性:
(1)Minimum和 Maximum属性:与TrackBar控件的同名属性基本相同。
(2)Value属性:用于设置或返回滑块在滚动条中所处的位置,其默认值为0。当滑块
的位置值为最小值时,滑块移到水平滚动条的最左端位置,或移到垂直滚动条的顶端位置。
当滑块的位置值为最大值时,滑块移到水平滚动条的最右端位置或垂直滚动条的底端位置。
(3)SmallChange和LargeChange属性:这两个属性主要用于调整滑块移动的距离。其
中 SmallChange属性用于控制当鼠标单击滚动条两边的箭头时,滑块滚动的值,即 Value属性
增加或减小的值。而LargeChange属性则控制当用鼠标直接单击滚动条时滑块滚动的值。当
用户按下PageUp键或PageDown键或者在滑块的任何一边单击滚动条轨迹时,Value属性将
按照 LargeChange属性中设置的值进行增加或减小。
2、常用事件:
(1)Scroll事件:该事件在用户通过鼠标或键盘移动滑块后发生。
(2)ValueChanged事件:该事件在滚动条控件的Value属性值改变时发生。
滚动条的使用方法与TrackBar控件基本一致,此处不再赘述。对话框类控件
17、OpenFileDialog 控件
OpenFileDialog控件又称打开文件对话框,主要用来弹出Windows中标准的【打开文件】
对话框。该控件在工具箱中的图标为 。
OpenFileDialog控件的常用属性如下。
(1)Title属性:用来获取或设置对话框标题,默认值为空字符串("")。如果标题为空字符串,则系统将
使用默认标题: “打开” 。
(2)Filter属性:用来获取或设置当前文件名筛选器字符串,该字符串决定对话框的【另存为文件类型】
或【文件类型】框中出现的选择内容。对于每个筛选选项,筛选器字符串都包含筛选器说明、垂直线条(|)
和筛选器模式。不同筛选选项的字符串由垂直线条隔开,例如: “文本文件(*.txt)|*.txt|所有文件(*.*)*.*” 。
还可以通过用分号来分隔各种文件类型,可以将多个筛选器模式添加到筛选器中,例如: “图像文件
(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG; *.GIF|所有文件(*.*)|*.*” 。
(3)FilterIndex属性:用来获取或设置文件对话框中当前选定筛选器的索引。第一个筛选器的索引为1,
默认值为1。
(4)FileName 属性:用来获取在打开文件对话框中选定的文件名的字符串。文件名既包含文件路径也包
含扩展名。如果未选定文件,该属性将返回空字符串("")。
(5)InitialDirectory属性:用来获取或设置文件对话框显示的初始目录,默认值为空字符串("")。
(6)ShowReadOnly属性:用来获取或设置一个值,该值指示对话框是否包含只读复选框。如果对话框包
含只读复选框,则属性值为true,否则属性值为false。默认值为false。
(7)ReadOnlyChecked属性:用来获取或设置一个值,该值指示是否选定只读复选框。如果选中了只读复
选框,则属性值为true,反之,属性值为false。默认值为false。
(8)Multiselect属性:用来获取或设置一个值,该值指示对话框是否允许选择多个文件。如果对话框允许
同时选定多个文件,则该属性值为true,反之,属性值为false。默认值为false。
(9)FileNames属性:用来获取对话框中所有选定文件的文件名。每个文件名都既包含文件路径又包含文
件扩展名。如果未选定文件,该方法将返回空数组。
(10)RestoreDirectory属性:用来获取或设置一个值,该值指示对话框在关闭前是否还原当前目录。假设
用户在搜索文件的过程中更改了目录,且该属性值为 true,那么,对话框会将当前目录还原为初始值,若
该属性值为 false,则不还原成初始值。默认值为 false。OpenFileDialog 控件的常用方法有两个:OpenFile
和 ShowDialog方法,本节只介绍ShowDialog方法,该方法的作用是显示通用对话框,其一般调用形式如
通用对话框对象名.ShowDialog();
通用对话框运行时,如果单击对话框中的【确定】按钮,则返回值为 DialogResult.OK;否则返回值为
DialogResult.Cancel。其他对话框控件均具有ShowDialog方法,以后不再重复介绍。
18、SaveFileDialog 控件
SaveFileDialog 控件又称保存文件对话框,主要用来弹出 Windows 中标准的【保存文件】对话框。该控件
在工具箱中的图标为 。
SaveFileDialog 控件也具有 FileName、Filter、FilterIndex、InitialDirectory、Title 等属性,这些属性的作用
与 OpenFileDialog对话框控件基本一致,此处不再赘述。
需注意的是:上述两个对话框只返回要打开或保存的文件名,并没有真正提供打开或保存文件的功能,程
序员必须自己编写文件打开或保存程序,才能真正实现文件的打开和保存功能。
19、FontDialog 控件
FontDialog控件又称字体对话框,主要用来弹出Windows中标准的【字体】对话框。该控件在工具箱中的
图标为 。字体对话框的作用是显示当前安装在系统中的字体列表,供用户进行选择。下面
介绍字体对话框的主要属性。
(1)Font属性:该属性是字体对话框的最重要属性,通过它可以设定或获取字体信息。
(2)Color属性:用来设定或获取字符的颜色。
(3)MaxSize属性:用来获取或设置用户可选择的最大磅值。
(4)MinSize属性:用来获取或设置用户可选择的最小磅值。192VisualC#.NET应用教程
(5)ShowColor属性:用来获取或设置一个值,该值指示对话框是否显示颜色选择框。如果对话框显示颜
色选择框,属性值为true,反之,属性值为false。默认值为false。
(6)ShowEffects 属性:用来获取或设置一个值,该值指示对话框是否包含允许用户指定删除线、下划线
和文本颜色选项的控件。如果对话框包含设置删除线、下划线和文本颜色选项的控件,属性值为 true,反
之,属性值为false。默认值为true。
20、ColorDialog控件
ColorDialog 控件又称颜色对话框,主要用来弹出 Windows 中标准的【颜色】对话框。该控件在工具箱中
的图标为 。颜色对话框的作用是供用户选择一种颜色,并用 Color 属性记录用户选择的颜色值。下面介绍颜色对话框的主要属性。
(1)AllowFullOpen属性:用来获取或设置一个值,该值指示用户是否可以使用该对话框定义自定义颜色。
如果允许用户自定义颜色,属性值为true,否则属性值为false。默认值为true。
(2)FullOpen 属性:用来获取或设置一个值,该值指示用于创建自定义颜色的控件在对话框打开时是否
可见。值为true时可见,值为 false时不可见。
(3)AnyColor 属性:用来获取或设置一个值,该值指示对话框是否显示基本颜色集中可用的所有颜色。
值为 true时,显示所有颜色,否则不显示所有颜色。
(4)Color属性:用来获取或设置用户选定的颜色。
21、PrintDialog控件和 PrintDocument 控件
PrintDialog 控件在工具箱中的图标是 ,PrintDocument 控件在工具箱中的图标是
。使用PrintDialog控件可以显示Windows标准的【打印】对话框,在该对话框中用户可
以选择打印机、选择要打印的页及页码范围等。需要注意的是:该对话框并不负责具体的打印任务,要想
在应用程序中控制打印内容必须使用 PrintDocument 控件。关于这两个控件的详细使用方法读者可参阅相
关资料或VisualC#的帮助文件。
6.用户自定义对话框
除了可以使用Windows自带的标准对话框外,用户还可以把自己设计的窗体定义成对话框。使用自定义对
话框有以下几个要点。
(1)将窗体的FormBorderStyle属性值设置为FixedDialog。
(2)根据需要向窗体上添加控件。
(3)使用窗体的ShowDialog方法显示窗体,即显示出对话框。
22、用户自定义对话框
除了可以使用Windows自带的标准对话框外,用户还可以把自己设计的窗体定义成对话框。使用自定义对
话框有以下几个要点。
(1)将窗体的FormBorderStyle属性值设置为FixedDialog。
(2)根据需要向窗体上添加控件。
(3)使用窗体的ShowDialog方法显示窗体,即显示出对话框。
23、菜单控件
Windows 的菜单系统是图形用户界面(GUI)的重要组成之一,在 VisualC#中使用 MainMenu 控件可以很
方便地实现Windows的菜单,MainMenu控件在工具箱中的图标为 。
1.菜单的结构
图 10-9和图10-10 是典型的菜单结构。其中有文字的单个命令称菜单项,顶层菜单项是横着排列的,单击
某个菜单项后弹出的称为菜单或子菜单,它们均包含若干个菜单项,菜单项其实是 MenuItem 类的一个对
象。菜单项有的是变灰显示的,表示该菜单项当前是被禁止使用的。有的菜单项的提示文字中有带下划线
的字母,该字母称为热键(或访问键),若是顶层菜单,可通过按“ALT+热键”打开该菜单,若是某个子
菜单中的一个选项,则在打开子菜单后直接按热键就会执行相应的菜单命令。有的菜单项后面有一个按键
或组合键,称快捷键,在不打开菜单的情况下按快捷键,将执行相应的命令。在图 10-9 中,【保存文件】
菜单项是加粗显示的,该菜单项称为默认项。图10-9的【另存为】和【退出】之间有一个灰色的线条,该
线条称为分隔线或分隔符。在图 10-10 中菜单项【白色背景】前面有一个“√”号,称为选中标记,菜单项加上选中标记表示该菜单项代表的功能当前正在起作用。
2.菜单项的常用属性
(1)Text 属性:用来获取或设置一个值,通过该值指示菜单项标题。当使用 Text 属性为菜单项指定标题
时,还可以在字符前加一个“&”号来指定热键(访问键,即加下划线的字母)。例如,若要将“File”中
的“F”指定为访问键,应将菜单项的标题指定为“&File” 。
(2)Checked属性:用来获取或设置一个值,通过该值指示选中标记是否出现在菜单项文本的旁边。如果
要放置选中标记在菜单项文本的旁边,属性值为true,否则属性值为false。默认值为false。
(3)DefaultItem 属性:用来获取或设置一个值,通过该值指示菜单项是否为默认菜单项。值为 true 时,
是默认菜单项,值为 false时,不是默认菜单项。菜单的默认菜单项以粗体的形式显示。当用户双击包含默
认项的子菜单后,默认项被选定,然后子菜单关闭。
(4)Enabled属性:用来获取或设置一个值,通过该值指示菜单项是否可用。值为true时表示可用,值为
false表示当前禁止使用。
(5)RadioCheck 属性:用来获取或设置一个值,通过该值指示选中的菜单项的左边是显示单选按钮还是
选中标记。值为true时将显示单选按钮标记,值为false时显示选中标记。
(6)Shortcut属性:用来获取或设置一个值,该值指示与菜单项相关联的快捷键。
(7)ShowShortcut 属性:用来获取或设置一个值,该值指示与菜单项关联的快捷键是否在菜单项标题的
旁边显示。如果快捷组合键在菜单项标题的旁边显示,该属性值为 true,如果不显示快捷键,该属性值为
false。默认值为true。
(8)MdiList属性:用来获取或设置一个值,通过该值指示是否用在关联窗体内显示的多文档界面(MDI)
子窗口列表来填充菜单项。若要在该菜单项中显示MDI子窗口列表,则设置该属性值为true,否则设置该
属性的值为false。默认值为false。
3.菜单项的常用事件 菜单项的常用事件主要有Click事件,该事件在用户单击菜单项时发生。
24、多窗体程序设计 Windows应用程序很少只由一个窗体组成,一般情况下一个应用程序均拥有很多个窗体。
C#项目刚建立时只有一个名为Form1的窗体,要建立多窗体应用程序应首先为项目添加窗体,添加窗体的方法如下。
(1) 单击工具栏上的按钮 或执行【项目】→【添加Windows窗体】命令将会出现如图 10-17 所示的【添加新项】对话框。
(2) 在该对话框的【模板】下面的列表框中选中【Windows 窗体】图标,在【名称】文本框中输
入窗体名,然后单击【打开】按钮,即为应用程序添加了一个窗体。
25、MDI 应用程序设计
1.MDI应用程序的概念
在前面的章节中,所创建的都是单文档界面(SDI)应用程序。这样的程序(如记事本和画图程序)仅支
持一次打开一个窗口或文档。如果需要编辑多个文档,必须创建SDI应用程序的多个实例。而使用多文档
界面(MDI)程序(如Word和AdobePhotoshop)时,用户可以同时编辑多个文档。MDI程序中的应用程
序窗口称为父窗口,应用程序内部的窗口称为子窗口。虽
然 MDI应用程序可以具有多个子窗口, 但是每个子窗口却
只能有一个父窗口。此外,处于活动状态的子窗口最大数
目是 1。子窗口本身不能再成为父窗口,而且不能移动到
它们的父窗口区域之外。除此以外,子窗口的行为与任何
其他窗口一样(如可以关闭、最小化和调整大小等)。一个
子窗口在功能上可能与父窗口的其他子窗口不同,例如,
一个子窗口可能用于编辑图像,另一个子窗口可能用于编
辑文本,第 3 个子窗口可以使用图形来显示数据,但是所
有的窗口都属于相同的MDI父窗口。图 10-19 是一个典型
的 MDI应用程序。外面的窗口是应用程序窗口,里面的两
个小窗口是 MDI子窗口。
2.与 MDI应用程序设计有关的属性、方法和事件
常用的MDI父窗体属性如下。
(1)ActiveMdiChild属性:该属性用来表示当前活动的MDI子窗口,如果当前没有子窗口,则返回null。
(2)IsMdiContainer属性:该属性用来获取或设置一个值,该值指示窗体是否为多文档界面(MDI)子窗
体的容器,即MDI父窗体。值为true时,表示是父窗体,值为false时,表示不是父窗体。
(3)MdiChildren属性:该属性以窗体数组形式返回MDI子窗体,每个数组元素对应一个 MDI子窗体。
常用的MDI子窗体的属性有:
(1)IsMdiChild属性:该属性用来获取一个值,该值指示该窗体是否为多文档界面(MDI)的子窗体。值
为 true时,表示是子窗体,值为false时,表示不是子窗体。
(2)MdiParent属性:该属性用来指定该子窗体的MDI父窗体。与MDI应用程序设计有关的方法中,一
般只使用父窗体的LayoutMdi方法,该方法的调用格式如下:
MDI父窗体名.LayoutMdi(Value);
该方法用来在MDI父窗体中排列MDI子窗体,以便导航和操作MDI子窗体。参数Value决定排列方式,
取值有:MdiLayout.ArrangeIcons(所有 MDI 子窗体以图标的形式排列在 MDI 父窗体的工作区内)、
MdiLayout.TileHorizontal (所有MDI子窗口均水平平铺在MDI父窗体的工作区内)、 MdiLayout.TileVertical
(所有 MDI 子窗口均垂直平铺在 MDI 父窗体的工作区内)和 MdiLayout.Cascade(所有 MDI 子窗口均层
叠在 MDI 父窗体的工作区内)。常用的 MDI 父窗体的事件是 MdiChildActivate,当激活或关闭一个 MDI
子窗体时将发生该事件。
3.菜单合并
父窗体和子窗体可以使用不同的菜单,这些菜单会在选择子窗体的时候合并。如果需要指定菜单的合并方
式,程序员可以设置每个菜单项的MergeOrder属性和MergeType属性.
(1)MergeOrder属性:用来确定当两个菜单合并时菜单项出现的顺序,具有较低
MergeOrder的菜单项会首先出现。
(2)MergeType属性:当合并的两个菜单的某些菜单项的MergeOrder属性值相等时,
使用该属性可以控制这些菜单项的显示方式。
26、键盘事件处理
键盘事件在用户按下键盘上的键时发生,可分为两类。第一类是KeyPress事件,当按下的键表示的是一个
ASCII 字符时就会触发这类事件,可通过它的 KeyPressEventArgs 类型参数的属性 KeyChar 来确定按下键
的 ASCII 码。使用 KeyPress 事件无法判断是否按下了修改键(例如 Shift,Alt 和 Ctrl 键),为了判断这些
动作, 就要处理KeyUp 或KeyDown事件, 这些事件组成了第二类键盘事件。 该类事件有一个KeyEventArgs
类型的参数,通过该参数可以测试是否按下了一些修改键、功能键等特殊按键信息。
1.KeyPressEventArgs类的主要属性(KeyPress事件的一个参数类型)
(1)Handled属性:用来获取或设置一个值,该值指示是否处理过KeyPress事件。
(2)KeyChar属性:用来获取按下的键对应的字符,通常是该键的ASCII码。
2.KeyEventArgs类的主要属性(KeyUp和 KeyDown事件的一个参数)
(1)Alt属性:用来获取一个值,该值指示是否曾按下Alt键。
(2)Control属性:用来获取一个值,该值指示是否曾按下Ctrl键。
(3)Shift属性:用来获取一个值,该值指示是否曾按下Shift键。
(4)Handled属性:用来获取或设置一个值,该值指示是否处理过此事件。
(5)KeyCode属性:以 Keys枚举型值返回键盘键的键码,该属性不包含修改键(Alt、Control和 Shift键)
信息,用于测试指定的键盘键。
(6)KeyData 属性:以 Keys 枚举类型值返回键盘键的键码,并包含修改键信息,用于判断关于按下键盘
键的所有信息。
(7)KeyValue属性:以整数形式返回键码,而不是Keys枚举类型值。用于获得所按下键盘键的数字表示。
(8)Modifiers 属性:以 Keys 枚举类型值返回所有按下的修改键(Alt、Control 和 Shift 键),仅用于判断
修改键信息。
27、鼠标事件处理
对鼠标操作的处理是应用程序的重要功能之一,在VisualC#中有一些与鼠标操作相关的事件,利用它们可
以方便地进行与鼠标有关的编程。
(1)MouseEnter事件:在鼠标指针进入控件时发生。
(2)MouseMove事件:在鼠标指针移到控件上时发生。事件处理程序接收一个MouseEventArgs类型的参
数,该参数包含与此事件相关的数据。该参数的主要属性及其含义如下。
Button属性:用来获取曾按下的是哪个鼠标按钮。该属性是MouseButtons枚举型的值,
取值及含义如下:Left(按下鼠标左按钮)、Middle(按下鼠标中按钮)、Right(鼠标右按钮)、None(没有按下鼠标按钮)、 XButton1 (按下了第一个XButton按钮, 仅用于Microsoft智能鼠标浏览器) 和XButton2 (按下了第二个XButton按钮,仅用于 Microsoft智能鼠标浏览器)
Clicks属性:用来获取按下并释放鼠标按钮的次数。
Delta属性:用来获取鼠标轮已转动的制动器数的有符号计数。制动器是鼠标轮的一个凹口。
X 属性:用来获取鼠标所在位置的x坐标。
Y 属性:用来获取鼠标所在位置的y坐标。
(3)MouseHover事件:当鼠标指针悬停在控件上时将发生该事件。
(4)MouseDown事件:当鼠标指针位于控件上并按下鼠标键时将发生该事件。事件处理程序也接收一个
MouseEventArgs类型的参数。
(5)MouseWheel事件:在移动鼠标轮并且控件有焦点时将发生该事件。该事件的事件处理程序接收一个
MouseEventArgs类型的参数
(6)MouseUp 事件:当鼠标指针在控件上并释放鼠标键时将发生该事件。事件处理程序也接收一个
MouseEventArgs类型的参数。
(7)MouseLeave事件:在鼠标指针离开控件时将发生该事件。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 winform代码添加控件 的文章

 

随机推荐