C#程序设计(二)-----Windows窗体及标签控件
来源:互联网 发布:视频压缩算法工程师 编辑:程序博客网 时间:2024/06/05 13:34
Windows窗体及标签控件
一般来说,一个完整的Windows应用程序的设计过程是:在项目中添加Windows窗体,向窗体加入用户操作的控件,分别设置窗体和控件的属性,在事件处理程序编程,在程序中调用各个对象的方法。
一、Windows窗体
窗体可以理解为一个窗口或一个应用程序的界面。当创建一个Windows应用程序项目时,系统自动为项目提供一个窗体,若应用程序需要增加窗体时,需要使用菜单:项目->添加Windows窗体->Windows窗体->打开,即可向项目中增加一个窗体。
窗体类的命名空间在System.Windows.Forms。
二、窗体的属性和事件
窗体有许多属性可以用来对窗体进行设置,以便使窗体符合程序的需要。以下仅列出最常用的几个:
属性名
作用
Name
标识窗体对象的名字,程序中用来指明是哪个窗体
Text
显示在窗体标题条上的文字
StartPosition
窗体显示在屏幕上的初始位置,
BackColor
设置背景颜色
ForeColor
设置前景颜色
BackgroundImage
设置背景图片
MaximizeBox
设置窗体是否需要最大化按钮
MinimizeBox
设置窗体是否需要最小化按钮
ControlBox
设置窗体是否需要关闭按钮
窗体有许多事件可以利用,程序中可以对需要利用的事件编写事件处理程序,当该事件发生时,事件处理程序被调用,以实现预定的功能。以下仅列出最常用的几个事件:
事件名
含义
Load
窗体载入时发生
Activated
窗体被激活时发生
Click
鼠标左键在窗体内单击时发生
DoubleClick
鼠标左键在窗体内双击时发生
KeyDown
键按下时发生
KeyUp
键弹起时发生
KeyPress
按键时发生
MouseMove
在窗体内移动鼠标时发生
三、Label控件
Label控件称为标签,主要用来显示静态文字,这些文字用作指示性说明,或者是这些文字不允许用户修改。
Label控件最常用的属性如下:
属性名
作用
Name
标识标签对象的名字,程序中用来指明是哪个标签
Text
标签显示出来的文字
Font
标签的字体和大小
ForeColor
文字的颜色
Location
标签在窗体中的位置
Size
标签的大小
Visible
标签的可见性,为true时可见,为false时不可见
标签也有许多事件,不过很少为标签的事件写程序。固此不多介绍。
四、Timer控件
Timer控件称计时器,其作用是用来计时,当程序中每隔一段时间就要做某一件事时,就使用它来控制。
计时器是在后台运行的控件,程序运行时总是不可见的,这类控件在设计状态时显示在窗体下部的架子上。
Timer控件的常用属性有3个:
属性名
作用
Name
标识计时器对象的名字,程序中用来指明是哪个计时器
Interval
设定时间间隔,单位为毫秒
Enabled
设置可用性,true时可用,false时不可用
Timer控件的事件只有一个Tick,它每当指定的时间间隔时发生。这个事件的事件处理程序总是要写的,否则使用这个控件就失去了意义。
五、应用举例(时钟)
这里有一个实例,在一个窗体中动态显示当前的日期和时间。
System.DateTime rq=DateTime.Now;
int y=rq.Year;
int m=rq.Month;
int d=rq.Day;
label1.Text=y.ToString();
label3.Text=m.ToString();
label5.Text=d.ToString();
label7.Text=rq.TimeOfDay.ToString().Substring(0,8);
命令按钮和文本框控件
一、Button控件
Button控件称为命令按钮,主要用来启动一个命令(程序功能)。
Button控件有很多属性与标签是相同的,例如Name、Text、Font、BackColor、 ForeColor等,在程序中最常用的利用的属性是Enabled,为true时控件可用,为false时控件不可用(灰色显示)。
标签也有许多事件,常常只使用click,鼠标左键单击时发生,用来启动一项程序功能。
二、TextBox控件
TextBox控件称为文本框,主要用来接受用户的输入。
TextBox控件有很多属性与前述控件是相同的,例如Name、Text、Font、BackColor、 ForeColor、Location、Size等,除此之外还有一些属性也是常用的:
属性名
作用
Enabled
控件是否可用
Visible
控件是否可见
Multiline
是否可以多行显示或输入
ReadOnly
是否只读
PasswordChar
输入口令时的掩盖字符
TextBox控件有很多事件可以使用,常常利用键盘和鼠标事件来判断用户的操作,以便程序作出正确的反映。
事件名
含义
DoubleClick
双击控件时发生
Enter
控件成为活动控件时发生
KeyDown
首次按下某键时发生
KeyUp
键弹起时发生
KeyPress
完成按键时发生
MouseMove
在控件内移动鼠标时发生
MouseDown
按下鼠标按钮时发生
MouseEnter
鼠标进入控件可见部分时发生
MouseLeave
鼠标离开控件可见部分时发生
MouseHover
鼠标在控件内停留一段时间后发生
TextBox控件有很多方法可以调用来实现特定的功能,常用的方法有:
方法名
功能
Clear
从文本框中清除所有文本
Copy
将文本框中选定的内容复制到剪贴板中
Cut
将文本框中选定的内容剪切到剪贴板中
Focus
将输入焦点于置文本框内
Paste
用剪贴板中的内容替换文本框中当前选定的内容
Select
选定文本框的一部分文字
SelectAll
选定文本框的全部文字
Undo
撤消在文本框中的上一次编辑操作
列表框和组合框
一、ListBox控件
ListBox控件称为列表框,主要用来供用户在列表中选择某些项。
ListBox控件的常用属性如下:
属性名
作用
DataSource
该控件获取列表项的数据源,例如某个数据表的某列或某个数组
Items
列表框中的各项
SelectIndex
列表框中选定项的索引号,从0开始,未选中任何项时为-1
SelectItem
列表框中的选定项
Text
列表框中选定项的文本
ListBox控件的常用事件如下:
事件名
含义
DoubleClick
双击控件时发生
Enter
控件成为活动控件时发生
SelectIndexChange
列表框中选择项的索引号变化时发生
ListBox控件的常用方法如下:
方法名
功能
ClearSelected
撤消对列表框中所有选择项的选择
SetSelected
设置或撤消对列表框中选择项的选择
对于ListBox控件的属性Items,它还带有一些十分有用的属性和方法。
ListBox控件的Items的常用方法如下:
方法名
功能
Add
向Items添加列表项
RemoveAt
从Items移除指定索引号的某项
Insert
向Items插入列表项到指定索引处
Clear
从Items移除所有列表项
Items有一个属性Count指明它有几项。
二、ComboBox控件
ComboBox控件称为组合框,它是文本框和列表框的组合,既可以接受用户的输入,也可以接受用户的选择。
组合框的属性、方法和事件与列表框是基本相同的。
菜单设计
菜单是组织应用程序功能的一种方法,Windows应用程序界面通常会通过菜单来使用程序的功能。
C#菜单分主菜单和弹出菜单(上下文菜单)两种。菜单可以由程序代码生成,也可以使用菜单控件直接编辑而成,后者使用简单快捷,是常用的菜单设计方式。
一、MainMenu控件
MainMenu控件称为主菜单,程序运行后主菜单显示在窗体的标题条下,供用户选择应用程序的功能。主菜单通常还有下一级的下拉菜单,每一个下拉菜单实际上是一个功能组。
1、编辑主菜单
将MainMenu控件拖入应用程序窗体,可以看到应用程序窗体下部增加了一个控件mainMenu1,此时应将窗体Form1的属性Menu设置为mainMenu1,否则程序运行时主菜单不可见。
选中mainMenu1,就可以在菜单编辑器上编辑菜单,只需在“请在此处输入”的空白处一级一级地输入,就可以完成主菜单的编辑。
编辑菜单项时,在Text属性中带有“(&字母)”项称为字母助记符,例如“文件(&F)”和“打开(&O)”,它的作用是通过助记符选中对应的菜单项。操作时,如果是窗体水平菜单条上的菜单项,按下Alt加助记符将选中该菜单,例如按Alt+F可选择“文件”菜单项;若菜单项是在下拉菜单上,则要在弹出下拉菜单后,直接按助记字母即可,例如在“文件”菜单组被下拉后,直接按O键可选中“打开”菜单项。
菜单名后的“…”表示启动该菜单功能后,会弹出一个对话框供用户作进一步的输入或选择,以便让程序明白用户要指定的操作目标。
MenuItem.Shortcut属性用来指定菜单功能的快捷键,即用快捷键代替菜单操作。例如指定“新建”菜单项的Shortcut属性为CtrlN后,在任何时刻按下Ctrl+N键都可以启动“新建”功能。
文件菜单组各菜单项的属性设置:
MenuItem.Name属性
MenuItem.Text属性
MenuItem.Shortcut属性
mainMenuItemNew
新建(&N)
CtrlN
mainMenuItemOpen
打开(&O)…
CtrlO
mainMenuItemSave
保存(&S)…
CtrlS
menuItem1
-
None
mainMenuItemExit
退出(&X)
None
编辑菜单组各菜单项的属性设置:
MenuItem.Name属性
MenuItem.Text属性
MenuItem.Shortcut属性
mainMenuItemUndo
撤消(&U)
CtrlZ
menuItem2
-
None
mainMenuItemCut
剪切(&T)…
CtrlX
mainMenuItemCopy
复制(&C)…
CtrlC
mainMenuItemPaste
粘贴(&P)
CtrlV
mainMenuItemDelete
删除(&L)
menuItem3
-
None
mainMenuItemAll
全选(&A)
CtrlA
格式菜单组各菜单项的属性设置:
MenuItem.Name属性
MenuItem.Text属性
MenuItem.Shortcut属性
mainMenuItemFont
字体(&F)…
None
mainMenuItemColor
颜色(&C)…
None
主菜单编辑时的状态如下图:
2、编写菜单处理程序
要为某菜单项编写处理程序,只要为该项的Click事件处理程序写入代码即可。
二、ContextMenu控件
ContextMenu控件称为上下文菜单或弹出菜单,使用时通常是在某目标上单击右键,立即弹出上下文菜单,单击某菜单项即可实现对应的功能。
1、编辑上下文菜单
将ContextMenu控件拖入应用程序窗体,可以看到应用程序窗体下部增加了一个控件ContextMenu1。单击这个控件,在原先主菜单的位置出现上下文菜单,其编辑方法同主菜单。
上下文菜单组各菜单项的属性设置:
MenuItem.Name属性
MenuItem.Text属性
contextMenuItemUndo
撤消(&U)
menuItem2
-
contextMenuItemCut
剪切(&T)…
contextMenuItemCopy
复制(&C)…
contextMenuItemPaste
粘贴(&P)
contextnMenuItemDelete
删除(&L)
2、上下文菜单的弹出
上下文菜单的弹出,通常是利用操作目标的右键单击事件。例如下段程序就是在窗体上击右键时便弹出上下文菜单contextMenu1。
...{
if(e.Button.ToString()=="Right")
...{ Point p=new Point(e.X,e.Y);
contextMenu1.Show(this,p);
}
}
1、 上下文菜单的事件处理程序
菜单处理程序:
private void mainMenuItemExit_Click(object sender, System.EventArgs e)
...{
this.Close();
}
private void mainMenuItemUndo_Click(object sender, System.EventArgs e)
...{
if(textBoxEdit.CanUndo==true)
...{
//调用TextBox.Undo()方法,撤消上一次操作
textBoxEdit.Undo();
//清除缓冲区中有关撤消操作的信息
textBoxEdit.ClearUndo();
}
}
private void mainMenuItemCut_Click(object sender, System.EventArgs e)
...{
if(textBoxEdit.SelectedText!="")
...{
//调用TextBox.Cut()方法,剪切选中的文本
textBoxEdit.Cut();
}
}
private void mainMenuItemCopy_Click(object sender, System.EventArgs e)
...{
if(textBoxEdit.SelectionLength>0)
...{
//调用TextBox.Copy()方法,复制选中的文本
textBoxEdit.Copy();
}
}
private void mainMenuItemPaste_Click(object sender, System.EventArgs e)
...{
if(Clipboard.GetDataObject().GetDataPresent(DataFormats.Text)==true)
...{
textBoxEdit.Paste();
}
}
private void mainMenuItemDelete_Click(object sender, System.EventArgs e)
...{
int start=textBoxEdit.SelectionStart;
int count=textBoxEdit.SelectionLength;
textBoxEdit.Text=textBoxEdit.Text.Remove(start,count);
textBoxEdit.SelectionStart=start;
}
private void mainMenuItemAll_Click(object sender, System.EventArgs e)
...{
textBoxEdit.SelectAll();
}
private void textBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
...{
if(e.Button.ToString()=="Right")
...{
if(Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
contextMenuItemPaste.Enabled=true;
else
contextMenuItemPaste.Enabled=false;
if(textBoxEdit.SelectionLength>0)
...{
contextMenuItemCut.Enabled=true;
contextMenuItemCopy.Enabled=true;
contextMenuItemDelete.Enabled=true;
}
else
...{
contextMenuItemCut.Enabled=false;
contextMenuItemCopy.Enabled=false;
contextMenuItemDelete.Enabled=false;
}
if(textBoxEdit.CanUndo==true)
contextMenuItemUndo.Enabled=true;
else
contextMenuItemUndo.Enabled=false;
Point pt=new Point(e.X,e.Y);
contextMenu1.Show(textBoxEdit,pt);
}
}
private void contextMenuItemUndo_Click(object sender, System.EventArgs e)
...{
mainMenuItemUndo_Click(null,null);
}
private void contextMenuItemCut_Click(object sender, System.EventArgs e)
...{
mainMenuItemCut_Click(null,null);
}
private void contextMenuItemCopy_Click(object sender, System.EventArgs e)
...{
mainMenuItemCopy_Click(null,null);
}
private void contextMenuItemPaste_Click(object sender, System.EventArgs e)
...{
mainMenuItemPaste_Click(null,null);
}
private void contextMenuItemDelete_Click(object sender, System.EventArgs e)
...{
mainMenuItemDelete_Click(null,null);
}
一、 动态控制菜单
动态控制菜单指的是根据应用程序运行时的不同状态以不同形式来显示菜单。
1. 不同状态时窗体上显示不同的主菜单
要显示不同的主菜单,只要为窗体设计多个主菜单,根据应用程序的当前状态决定显示哪个主菜单。为了实现这一点,需要在程序中将当前的主菜单名赋给窗体的Menu属性。也可以只设计一个主菜单,当需要改变主菜单的某些项时,在程序中动态修改这个主菜单的这些项即可。
2. 某菜单项不满足使用条件时应以灰色显示
要以深色或灰色显示某个菜单项,需要将这个菜单项的Enabled属性设置为true或false,这当然需要依据当前是否符合使用该项功能的前提而定。
为了动态控制“编辑”菜单组中各菜单项的显示状态,可利用mainMenuItemEdit的Popup事件,即在该下拉菜单弹出时决定那些项以深色显示,那些项以灰色显示。
...{
if(Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
mainMenuItemPaste.Enabled=true;
else
mainMenuItemPaste.Enabled=false;
if(textBoxEdit.SelectionLength>0)
...{
mainMenuItemCut.Enabled=true;
mainMenuItemCopy.Enabled=true;
mainMenuItemDelete.Enabled=true;
}
else
...{
mainMenuItemCut.Enabled=false;
mainMenuItemCopy.Enabled=false;
mainMenuItemDelete.Enabled=false;
}
//根据文本框中是否可执行撤消操作
//决定mainMenuItemUndo是否可用
if(textBoxEdit.CanUndo==true)
mainMenuItemUndo.Enabled=true;
else
mainMenuItemUndo.Enabled=false;
}
- C#程序设计(二)-----Windows窗体及标签控件
- C#程序设计(二十七)----创建一个如下的窗体,并在窗体上放置一个标签、一个treeviw控件
- C#程序设计(二十六)----创建一个如下的窗体,并在窗体上放置一个标签、一个按钮、一个fontDialog控件
- windows窗体及控件
- C#程序设计(二十九)----登录窗体与主窗体
- Panel 控件概述(Windows 窗体)c#
- c#windows窗体程序设计
- Windows 窗体应用程序设计
- C# 高手 对 Windows 窗体上的控件 的认识
- C# 高手 对 Windows 窗体上的控件 的认识
- C#高手对Windows窗体上的控件的认识
- C# 对 Windows 窗体控件进行线程安全调用
- c#中如何跨线程调用windows窗体控件?
- c#中如何跨线程调用windows窗体控件?
- 转:c#中跨线程调用windows窗体控件
- c#中如何跨线程调用windows窗体控件
- c#中跨线程调用windows窗体控件
- C#对 Windows 窗体控件进行线程安全调用
- 转:ASP.net中动态加载控件时一些问题的总结
- Tomcat配置SQLServer数据连接池
- 农业银行代销基金一览表
- SAX notes
- DTD-属性
- C#程序设计(二)-----Windows窗体及标签控件
- [原创]ASP.NET 运行模式学习(一)
- Details: To enable the details of this specific error message to be viewable on remote machines, please create a tag within a
- cakephp分页/cakephpページング/cakephp paging
- 开发笔记:Java命名规范
- DTD - 实体(Entities)
- 做程序员最重要的是什么?
- .net xml中无效字符处理
- 帮同学清除在QQ群里乱发消息的病毒MsnSvc64.exe