窗体是C# 的一大特色,我想这也许也是部分开发者选择 C# 的原因之一。C# 的窗体控件看起来很多,但是常用的也就是那么几个(在以下表格中用红色字体表示),这篇博客就简单介绍一下,之后也会不定期更新的。
1.控件表格
序号 | 控件名称 | 图例 | 作用 |
---|---|---|---|
1 | label (标签) | ![]() | 可用于显示少量文本,一般做指示用 |
2 | TextBox & RichTextBox(文本框) | ![]() | 可用于显示大量文本 |
3 | NumericUpDown(数值调整器) | ![]() | 控件中内容(一般是数字)可通过上下箭头调整或输入 |
4 | Button(按钮) | ![]() | 通常用它来执行命令 |
5 | RadioButton(单选按钮) | ![]() | 常成组出现,用于提供两个或多个互斥选项 |
6 | GroupBox(分组框) | ![]() | 为其他控件提供可识别的分组 |
7 | CheckBox(复选框) | ![]() | 可多选 |
8 | ListBox(列表框) | ![]() | 它显示一个项目列表供用户选择。用户一次可以选择一项,也可以选择多项。 |
9 | ComboBox(组合框) | ![]() | 顶部是一个允许输入文本的文本框,下面的列表框则显示列表项 |
10 | CheckedListBox(复选列表框) | ![]() | 能完成列表框可以完成的所有任务,并且还可以在列表项旁边显示复选标记 |
11 | PictureBox(图片框) | ![]() | 常用于图形设计和图像处理应用程序 |
12 | Timer(计时器) | ![]() | 按一定的时间间隔周期性地触发一个名为Tick的事件 |
13 | ProgressBar(进度条) | ![]() | 通过在应用程序中使用进度条,就可以告诉用户应用程序正在执行冗长的任务且应用程序仍在响应。 |
14 | TrackBar(跟踪条) | ![]() | 在大量信息中进行浏览,或用于以可视形式调整数字设置 |
15 | HScrollBar (水平滚动条) | ![]() | 方便在较长的列表中或大量信息中 转移 |
16 | VScrollBar(垂直滚动条) | ![]() | 方便在较长的列表中或大量信息中 转移 |
17 | OpenFileDialog(打开文件对话框) | ![]() | 用来弹出Windows中标准的【打开文件】 |
18 | SaveFileDialog (保存文件对话框) | ![]() | 用来弹出 Windows 中标准的【保存文件】对话框 |
19 | FontDialog (字体对话框) | ![]() | 用来弹出Windows中标准的【字体】对话框 |
20 | ColorDialog(颜色对话框) | ![]() | 用来弹出 Windows 中标准的【颜色】对话框 |
21 | MenuStrip(菜单) | ![]() | 形成菜单 |
22 | PrintDialog(打印对话框) | ![]() | 显示Windows标准的【打印】对话框 |
23 | ListView (列表) | ![]() | 注意行列,groups,博客 |
注:控件的具体属性和事件响应请看最后链接!
2.控件属性
(1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。
(2) WindowState属性: 用来获取或设置窗体的窗口状态。 取值有三种: Normal (窗体正常显示)、 Minimized
(窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示)。
(3)StartPosition属性:用来获取或设置运行时窗体的起始位置。
(4)Text属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。
(5)Width属性:用来获取或设置窗体的宽度。
(6)Height属性:用来获取或设置窗体的高度。
(7)Left属性:用来获取或设置窗体的左边缘的x坐标(以像素为单位)。
(8)Top属性:用来获取或设置窗体的上边缘的y坐标(以像素为单位)。
(9)ControlBox属性:用来获取或设置一个值,该值指示在该窗体的标题栏中是否显示控制框。值为true 时将显示控制框,值为false时不显示控制框。
(10)MaximizeBox属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。值为 true 时显示最大化按钮,值为false时不显示最大化按钮。
(11)MinimizeBox 属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。值为 true时显示最小化按钮,值为false时不显示最小化按钮。
(12)AcceptButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按 Enter 键时就相当于单击了窗体上的该按钮。
(13)CancelButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按 Esc 键时就相当于单击了窗体上的该按钮。
(14)Modal 属性:该属性用来设置窗体是否为有模式显示窗体。如果有模式地显示该窗体,该属性值为true;否则为 false。当有模式地显示窗体时,只能对模式窗体上的对象进行输入。必须隐藏或关闭模式窗体(通常是响应某个用户操作),然后才能对另一窗体进行输入。有模式显示的窗体通常用做应用程序中的对话框。
(15)ActiveControl属性:用来获取或设置容器控件中的活动控件。窗体也是一种容器控件。
(16)ActiveMdiChild属性:用来获取多文档界面(MDI)的当前活动子窗口。
(17)AutoScroll 属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。如果此属性值设置为
true,则当任何控件位于窗体工作区之外时,会在该窗体上显示滚动条。另外,当自动滚动打开时,窗体的工作区自动滚动,以使具有输入焦点的控件可见。
(18)BackColor属性:用来获取或设置窗体的背景色。
(19)BackgroundImage属性:用来获取或设置窗体的背景图像。
(20)Enabled 属性:用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。如果控件可以对用户交互作出响应,则为 true;否则为false。默认值为true。
(21)Font属性:用来获取或设置控件显示的文本的字体。
(22)ForeColor属性:用来获取或设置控件的前景色。
(23)IsMdiChild属性:获取一个值,该值指示该窗体是否为多文档界面(MDI)子窗体。值为 true时,是子窗体,值为false时,不是子窗体。
(24)IsMdiContainer 属性:获取或设置一个值,该值指示窗体是否为多文档界面(MDI)中的子窗体的容器。值为true时,是子窗体的容器,值为false时,不是子窗体的容器。
(25)KeyPreview属性:用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的控件前,窗体
是否将接收该事件。值为true时,窗体将接收按键事件,值为false时,窗体不接收按键事件。
(26)MdiChildren属性:数组属性。数组中的每个元素表示以此窗体作为父级的多文档界面(MDI)子窗体。
(27)MdiParent属性:用来获取或设置此窗体的当前多文档界面(MDI)父窗体。
(28)ShowInTaskbar属性:用来获取或设置一个值,该值指示是否在Windows任务栏中显示窗体。
(29)Visible属性:用于获取或设置一个值,该值指示是否显示该窗体或控件。值为true时显示窗体或控件,为 false时不显示。
(30)Capture属性:如果该属性值为true,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的范围内。
3.窗体编程技巧
1.窗口切换
1.新建一个form, 添加自己需要的控件,但是必须要有GroupBox:
2.添加 n 个用户控件
你想要几个窗口,就搞几个。
3.在主窗口的代码中,定义n个窗口变量,并在load过程中给n个窗口变量赋值。
public partial class Curve : Form
{
public Scurve s1;//定义窗体变量
public Hcurve h1;
private void Curve_Load(object sender, EventArgs e)
{
s1 = new Scurve();//给窗体变量赋值
h1 = new Hcurve();
}
public Curve()
{
InitializeComponent();
}
}
4.添加控制窗口切换的事件响应函数:
private void SToolStripMenuItem_Click(object sender, EventArgs e)
{
s1.Show();//显示窗体控件
gB.Controls.Clear();//清空之前加载的窗体控件
gB.Controls.Add(s1);//加载窗体控件s1
}
private void HToolStripMenuItem_Click(object sender, EventArgs e)
{
h1.Show();//显示窗体控件
gB.Controls.Clear();//清空之前加载的窗体控件
gB.Controls.Add(h1);//加载窗体控件h1
}
这里的gB是groupBox 的Name
5.然后在你刚才创建的用户控件中添加你需要的控件,就完事了。
2.在一个窗体中使用另一个窗体中的控件
Form2 frm2 = new Form1();
frm2.Button; //调用控件
frm2.Method(); //调用方法
如果要用到另一个控件中的属性,该控件的Modifiers 属性应改为 public:
3.展开/折叠窗口
1.首先添加俩button
2.在窗体的 Load 函数中添加:
this.Size = new Size(780, 492);//小号窗体
Control1.Visible = false;
3.分别双击俩按钮,添加事件相应函数
//展开
private void Control_Click(object sender, EventArgs e)
{
int a = 1212 - 812, b = a / 10;//让展开过程有个动画效果。
for (int i = 0; i < 11; i++)
{
this.Size = new Size(782+b*i, 492);
System.Threading.Thread.Sleep(30);//休眠30毫秒
}
Control.Visible=false;
Control1.Visible = true;
}
//折叠
private void Control1_Click(object sender, EventArgs e)
{
int a = 812 - 1212, b = a / 10;//让折叠过程有个动画效果。
for (int i = 0; i < 11; i++)
{
this.Size = new Size(1210 + b * i, 492);
System.Threading.Thread.Sleep(30);//休眠30毫秒
}
Control1.Visible = false;
Control.Visible = true;
}
4.结果展示:
4.用pictureBox 画图
https://blog.csdn.net/Gou_Hailong/article/details/96458624
画圆弧:https://blog.csdn.net/Gou_Hailong/article/details/106715943
5.右键弹菜单
1.添加一个ContextMenuStrip,并且添加相应的项。
2.在文本框 RichTextBox 的属性 contextMenuStrip 中选择新增的右键菜单控件 contextMenuStrip1。
3.在相应的按钮上添加相应的响应事件函数。
6.快捷键
1.按钮的Text属性为例:新建(&N)
(可选)
2.窗体的KeyPreview(向窗体注册键盘事件)(确定窗体上控件的键盘事件是否已向窗体注册)属性设置为True;
3.在窗体的KeyDown事件中做相应业务处理:eg.
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyCode == Keys.P) && e.Control)
buttonname.PerformClick();//打印 Ctrl+P
if ((e.KeyCode == Keys.N) && e.Control)
buttonname.PerformClick();//新建 Ctrl+N
}
7.超链接
System.Diagnostics.Process.Start("https://blog.csdn.net/Gou_Hailong/article/details/105362633");
引用/参考文章
[1] OnLineStudy-CSDN博主:https://blog.csdn.net/OnLineStudy/article/details/5761388
[2] 杜_小妖-CSDN博主:https://blog.csdn.net/duyusean/article/details/73381502
[3] 百度经验:https://jingyan.baidu.com/article/f7ff0bfc7176492e26bb1309.html