C# 控件属性和事件.docx
《C# 控件属性和事件.docx》由会员分享,可在线阅读,更多相关《C# 控件属性和事件.docx(11页珍藏版)》请在冰豆网上搜索。
![C# 控件属性和事件.docx](https://file1.bdocx.com/fileroot1/2023-3/28/d11c11fc-c566-4fb6-a3c0-f85ee6d8bb1d/d11c11fc-c566-4fb6-a3c0-f85ee6d8bb1d1.gif)
C#控件属性和事件
窗体是程序与用户交互的可视界面,窗体也是对象,窗体类定义了生成窗体的模版,实例化一个窗体类就产生了一个窗体。
.NET框架类库的System.Windows.Forms命名空间中定义的Form类是所有窗体类的基类。
1、常用属性
属性:
图标、标题、位置、背景等可在窗体属性面板设置,也可以代码实现。
(1)Name属性:
用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。
(2)WindowState属性:
用来获取或设置窗体的窗口状态。
取值有三种:
Normal(窗体正常显示)、Minimized(窗体以最小化形式显示)和Maximized(窗体以最大化形式显示)。
(3)StartPosition属性:
用来获取或设置运行时窗体的起始位置。
(4)Text属性:
该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。
(5)AcceptButton属性:
该属性用来获取或设置一个值,该值是一个按钮的名称,当按Enter键时就相当于单击了窗体上的该按钮。
(6)CancelButton属性:
该属性用来获取或设置一个值,该值是一个按钮的名称,当按Esc键时就相当于单击了窗体上的该按钮。
(7)Modal属性:
该属性用来设置窗体是否为有模式显示窗体。
如果有模式地显示该窗体,该属性值为true;否则为false。
当有模式地显示窗体时,只能对模式窗体上的对象进行输入。
必须隐藏或关闭模式窗体(通常是响应某个用户操作),然后才能对另一窗体进行输入。
有模式显示的窗体通常用做应用程序中的对话框。
(8)ActiveControl属性:
用来获取或设置容器控件中的活动控件。
窗体也是一种容器控件。
(9)ActiveMdiChild属性:
用来获取多文档界面(MDI)的当前活动子窗口。
(10)AutoScroll属性:
用来获取或设置一个值,该值指示窗体是否实现自动滚动。
如果此属性值设置为true,则当任何控件位于窗体工作区之外时,会在该窗体上显示滚动条。
另外,当自动滚动打开时,窗体的工作区自动滚动,以使具有输入焦点的控件可见。
(11)Enabled属性:
用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。
如果控件可以对用户交互作出响应,则为true;否则为false。
默认值为true。
(12)KeyPreview属性:
用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的控件前,窗体是否将接收该事件。
值为true时,窗体将接收按键事件,值为false时,窗体不接收按键事件。
(13)ShowInTaskbar属性:
用来获取或设置一个值,该值指示是否在Windows任务栏中显示窗体。
(14)Visible属性:
用于获取或设置一个值,该值指示是否显示该窗体或控件。
值为true时显示窗体或控件,为false时不显示。
(15)Capture属性:
如果该属性值为true,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的范围内。
2、常用方法
自身窗体this.hide();
其它窗体
Form2f2=newForm2();
f2.Show();
下面介绍一些窗体的最常用方法。
(1)Show方法:
该方法的作用是让窗体显示出来,其调用格式为:
窗体名.Show();
其中窗体名是要显示的窗体名称。
(2)Hide方法:
该方法的作用是把窗体隐藏出来,其调用格式为:
窗体名.Hide();
其中窗体名是要隐藏的窗体名称。
(3)Refresh方法:
该方法的作用是刷新并重画窗体,其调用格式为:
窗体名.Refresh();
其中窗体名是要刷新的窗体名称。
(4)Activate方法:
该方法的作用是激活窗体并给予它焦点。
其调用格式为:
窗体名.Activate();
其中窗体名是要激活的窗体名称。
(5)Close方法:
该方法的作用是关闭窗体。
其调用格式为:
窗体名.Close();
其中窗体名是要关闭的窗体名称。
(6)ShowDialog方法:
该方法的作用是将窗体显示为模式对话框。
其调用格式为:
窗体名.ShowDialog();
3.常用事件
为窗体、控件添加事件在属性面板的“事件”选项卡里操作。
(1)Load事件:
该事件在窗体加载到内存时发生,即在第一次显示窗体前发生。
(2)Activated事件:
该事件在窗体激活时发生。
(3)Deactivate事件:
该事件在窗体失去焦点成为不活动窗体时发生。
(4)Resize事件:
该事件在改变窗体大小时发生。
(5)Paint事件:
该事件在重绘窗体时发生。
(6)Click事件:
该事件在用户单击窗体时发生。
(7)DoubleClick事件:
该事件在用户双击窗体时发生。
(8)Closed事件:
该事件在关闭窗体时发生。
4.添加事件
以窗体Load事件为例:
Load(加载)事件发生于Form窗体的加载时候,其设置步骤如下。
(1)打开VS2008,新建一个Windows窗体应用程序,并命名为FormEventTest。
(2)打开其Form1的属性窗口,切换到“事件”选项卡(一个闪电标志)
(3)找到Load事件项,然后双击进入该事件代码编辑文件Form1.cs,为其编写代码。
[c-sharp] viewplain copy
1.private void MainForm_Load(object sender, EventArgs e) { if (MessageBox.Show("我是文本:
查看窗体2", "我是标题", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) { Form2 f2 = new Form2(); f2.Show(); } } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { DialogResult dr = MessageBox.Show("是否关闭窗口","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning); if (dr == DialogResult.Yes) { e.Cancel = false; } else { e.Cancel = true; } }
事实上,和VB类似,直接在窗体上双击就会进入Load事件编辑代码
5.继承窗体
继承窗体就是根据现有窗体的结构创建一个与其一样的新窗体,这种从现有窗体继承的过程称为可视化继承。
两种方式创建继承窗体
编程方式:
继承选择器:
6.控件
窗体由控件构成,控件分常用控件和高级控件,常用控件主要有文本类控件、选择类控件及分组控件等。
C#控件的基类是System.Windows.Forms命名空间下的Control类
文本类控件:
Label、Button、TextBox、RichTextBox
选择类控件:
CheckBox、ComboBox、ListBox、RadioButton
分组控件:
GroupBox、Panel、FlowLayoutPanel、SplitContainer、TabControl、TableLayoutPanel
C#控件一览:
介绍了多种常用控件的属性、方法和事件。
7.特殊实现
(1)启动欢迎界面
将该界面设置为欢迎界面,添加Timer控件,倒计时数秒后启动主界面
(2)多窗体应用程序设置启动窗体
在Program.cs中,改变Run方法的参数
publicstaticvoidRun(FrommainFrom);
例如:
Application.Run(newForm1());
其中,Form1为窗体名
(3)程序退出
窗体相关事件
this.hide();//隐藏
this.show();显示
this.Close(); 关闭,注意会关闭整个应用程序
Application.Exit();关闭,注意会关闭整个应用程序
(4)“接受”按钮、“取消”按钮
[c-sharp] viewplain copy
1.private void Form1_Load(object sender, EventArgs e) { this.AcceptButton = button1; //设置为“接受”按钮,Enter键相当于单击该按钮 this.CancelButton = button2; //设置为“取消”按钮,Esc键相当于单击该按钮 }
(5)启动浏览器打开网页
System.Diagnostics.Process.Start(e.LinkText);//e.LinkText换成具体链接
(6)判断某字符串是否为数字型
inta;
if(Int32.TryParse(textBox1.Text,outa))
{
//MessageBox.Show("数字");
}
else
{
MessageBox.Show("非数字");
}
8.文本框TextBox
密码文本框:
设置文本框的PasswordChar属性,或UseSystemPasswordChar属性
多行文本框:
Multiline属性设为True
突出显示:
设置SelecttionStart、SelectionLength属性
9.RichTextBox
有格式文本控件,用于显式、输入和操作带有格式的文本,比如实现显式字体、颜色、链接、从文件加载文本、及嵌入的图形、撤销重复编辑操作以及查找字符串功能。
[c-sharp] viewplain copy
1.private void Form1_Load(object sender, EventArgs e) { this.AcceptButton = button1; //设置为“接受”按钮,Enter键相当于单击该按钮 this.CancelButton = button2; //设置为“取消”按钮,Esc键相当于单击该按钮 richTextBox1.ScrollBars = RichTextBoxScrollBars.Vertical; //只显式垂直滚动条 richTextBox1.SelectionFont = new Font("楷体",12,FontStyle.Bold); //字体大小、加粗 richTextBox1.SelectionColor = System.Drawing.Color.Blue; //字体颜色蓝色 richTextBox1.Text = "欢迎登录矿大"; //设置文本,自动加超链接 richTextBox1.SelectionBullet = true;//控件内容以项目符号列表的格式排列 richTextBox1.SelectionIndent = 8; //左边缘距离 richTextBox1.SelectionRightIndent = 12; //右边缘距离 richTextBox1.SaveFile("C:
//tang.RTF"); //保存内容到文件,三种格式 } //RichTextBox的链接点击消息处理 private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e) { // 编写链接点击事件,启动浏览器浏览链接 System.Diagnostics.Process.Start(e.LinkText); }
10.下拉组合框ComboBox
(1)DropDownStyle:
设置样式
Simple:
列表部分总是可见
DropDown:
为默认值,可编辑文本框
DropDownList:
不能编辑文本框
(2)SelectAll()方法选择可编辑框的所有文本
11复选框CheckBox
CheckState属性:
是否选中,值为Checked、Unchecked
12.单选按钮
checked属性:
是否选中职位True,
13.数值选择控件
(1)用于显示和输入数值,提供上下箭头,用户可以直接输入,也可以用箭头修改数值
Maximum:
最大值
Mininmun:
最小值
Value:
值
(2)显式格式
DecimalPlaces:
小数点后位数,默认0
ThousandsSeparater:
千分符,默认false
Hexadecimal:
十六进制显式
14.列表控件ListView
(1)添加删除项目:
ListBox控件Items属性的Add方法、Remove方法
(2)当前选中项目:
ListBox的SelectedItem属性
(3)多选:
SelectionMode属性
MultiExtended(可用Shift、Ctrl键)
MultiSimple多选
One:
单选
None:
无法选择
(4)选中的项数
listBox1.SelectedItems.Count.ToString();多选情况下
样式、列标头、列宽设置
listView1.View=View.Details;//视图样式,
listView1.Columns.Add("文件名");//添加标头
listView1.Columns.Add("路径");
listView1.Columns.Add("大小");
listView1.Columns.Add("创建时间");
listView1.Columns[0].Width=100;//设置宽度
listView1.Columns[1].Width=200;//设置宽度
listView1.Columns[2].Width=100;//设置宽度
listView1.Columns[3].Width=100;//设置宽度
//添加项
listView1.Items.Clear(); //清空
listView1.Items.Add(processes[i].ProcessName);
listView1.Items[listView1.Items.Count-1].SubItems.Add(processes[i].Id.ToString());
listView1.Items[listView1.Items.Count-1].SubItems.Add(processes[i].Id.ToString());
listView1.Items[listView1.Items.Count-1].SubItems.Add(processes[i].Id.ToString());
15.分组控件
Panel:
GroupBox:
分组框
TabControl:
选项卡
(1)为选项卡设置图标,改变选项卡标题
创建一个windows应用程序,向窗体添加一个ImageList控件,然后像ImageList控件添加图形列表;
添加一个TabControl控件,将其ImageList属性设置为ImageList1控件,并将TabPage选项卡的ImageIndex属性设置为列表中相应图像的索引。
可以直接在属性面板操作,也可以编写以下代码
[c-sharp] viewplain copy
1.private void Form1_Load(object sender, EventArgs e) { tabControl1.ImageList = imageList1; tabPage1.ImageIndex = 0; tabPage1.Text = "选项卡1"; tabPage2.ImageIndex = 2; tabPage2.Text = "选项卡2"; }
(2)将选项卡显示为按钮
将TabControl控件的Appearence属性设置为Buttons或FlatButtons,可以将选项卡显示为按钮样式。
(三维按钮、平面按钮)
tabControl1.Appearance=TabAppearance.Buttons;
(3)在选项卡中新增控件
[c-sharp] viewplain copy
1.private void button3_Click(object sender, EventArgs e) { Button btn1 = new Button(); btn1.Text = "新增按钮"; tabPage1.Controls.Add(btn1); }
(4)添加、移除选项卡
添加:
TabPages属性的Add方法
stringtitle="新增选项卡"+(tabControl1.TabCount+1);
TabPagemyTabPage=newTabPage(title);
tabControl1.TabPages.Add(myTabPage);
删除:
TabPages属性的Remove方法
tabControl1.TabPages.Remove(tabControl1.SelectedTab);
移除所有选项卡:
TabPages属性的clear
(5)DataGridView
列宽设置无效?
需要把列的AutoSizeMode属性设为None,宽度设置才会生效。
列标题居中
dataGridView1.ColumnHeadersDefaultCellStyle.Alignment=DataGridViewContentAlignment.MiddleCenter;//标题居中
列居中对齐
dataGridView1.Columns[0].DefaultCellStyle.Alignment=DataGridViewContentAlignment.MiddleCenter;
如何让全部列填充满整个控件?
点击datagridview右上角的小三角->"编辑列"->选中最后一列->右边的属性框有个“布局”->"AutoSizeMode"的属性,设置它为Fill就Ok了
dataGridView选中的时候选中正行而不是一个单元格
dataGridView1.SelectionMode=DataGridViewSelectionMode.FullRowSelect;//选中正行,而非单元格
最左列的赋值
datagridview.Rows[i].HeaderCell.Value
最左列的显示与改变宽度
dataGridView1.RowHeadersVisible=false;//最左侧列隐藏
dataGridView1.RowHeadersWidth=60; //设置宽度
防删除出错
intindexid=dataGridView1.CurrentRow.Index;//当前行
//MessageBox.Show(dataGridView1.Rows.Count.ToString()+indexid.ToString());
if(indexid<0||indexid>=dataGridView1.Rows.Count-1)
{}
else
{
if(MessageBox.Show("确定删除吗?
","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)==DialogResult.Yes)
{
dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
}
}
datagridview控件左侧的固定列能显示出序号吗?
(左侧的固定列有点宽,而且有一个右箭头,想让这一列能显示出递增的序号)
[csharp] viewplain copy
1.private void dataGridView1_RowPostPaint_1(object sender, DataGridViewRowPostPaintEventArgs e)
2. {
3. Rectangle rowHeaderBounds = new Rectangle
4. (
5. 2, e.RowBounds.Top,
6. this.dataGridView1.RowHeadersWidth-2, e.RowBounds.Height - 1
7. );
8.
9. using (Brush backbrush =
10. new SolidBrush(SystemColors.Control))
11. {
12. e.Graphics.FillRectangle(backbrush, rowHeaderBounds);
13. }
14.
15. if (e.R