当前位置: 首页 > news >正文

C# 窗体控件简介 ∈ C# 编程笔记

窗体是C# 的一大特色,我想这也许也是部分开发者选择 C# 的原因之一。C# 的窗体控件看起来很多,但是常用的也就是那么几个(在以下表格中用红色字体表示),这篇博客就简单介绍一下,之后也会不定期更新的。

1.控件表格

序号控件名称图例作用
1label (标签)在这里插入图片描述可用于显示少量文本,一般做指示用
2TextBox & RichTextBox(文本框)在这里插入图片描述可用于显示大量文本
3NumericUpDown(数值调整器)在这里插入图片描述控件中内容(一般是数字)可通过上下箭头调整或输入
4Button(按钮)在这里插入图片描述通常用它来执行命令
5RadioButton(单选按钮)在这里插入图片描述常成组出现,用于提供两个或多个互斥选项
6GroupBox(分组框)在这里插入图片描述为其他控件提供可识别的分组
7CheckBox(复选框)在这里插入图片描述可多选
8ListBox(列表框)在这里插入图片描述它显示一个项目列表供用户选择。用户一次可以选择一项,也可以选择多项。
9ComboBox(组合框)在这里插入图片描述顶部是一个允许输入文本的文本框,下面的列表框则显示列表项
10CheckedListBox(复选列表框)在这里插入图片描述能完成列表框可以完成的所有任务,并且还可以在列表项旁边显示复选标记
11PictureBox(图片框)在这里插入图片描述常用于图形设计和图像处理应用程序
12Timer(计时器)在这里插入图片描述按一定的时间间隔周期性地触发一个名为Tick的事件
13ProgressBar(进度条)在这里插入图片描述通过在应用程序中使用进度条,就可以告诉用户应用程序正在执行冗长的任务且应用程序仍在响应。
14TrackBar(跟踪条)在这里插入图片描述在大量信息中进行浏览,或用于以可视形式调整数字设置
15HScrollBar (水平滚动条)在这里插入图片描述方便在较长的列表中或大量信息中 转移
16VScrollBar(垂直滚动条)在这里插入图片描述方便在较长的列表中或大量信息中 转移
17OpenFileDialog(打开文件对话框)在这里插入图片描述用来弹出Windows中标准的【打开文件】
18SaveFileDialog (保存文件对话框)在这里插入图片描述用来弹出 Windows 中标准的【保存文件】对话框
19FontDialog (字体对话框)在这里插入图片描述用来弹出Windows中标准的【字体】对话框
20ColorDialog(颜色对话框)在这里插入图片描述用来弹出 Windows 中标准的【颜色】对话框
21MenuStrip(菜单)在这里插入图片描述形成菜单
22PrintDialog(打印对话框)在这里插入图片描述显示Windows标准的【打印】对话框
23ListView (列表)在这里插入图片描述注意行列,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

相关文章:

  • C# 求取圆心/球心坐标 ∈ C# 编程笔记
  • C# DrawArc(画弧)
  • 模式识别 这些干货你都 get 了吗?
  • 用MATLAB 读写各种文件 ∈ Matlab 使用笔记
  • Matlab 求矩阵均值和协方差矩阵 ∈ Matlab 使用笔记
  • 常用遥感卫星数据汇总
  • 遥感图像分类领域的混淆矩阵
  • 模式识别+Matlab 最大似然分类(MLC)【贝叶斯(Bayes)分类法】
  • “北斗”知多少?
  • 2坐标格式转换 ∈ C# 编程笔记
  • 1坐标格式转换 ∈ C# 编程笔记
  • 2坐标转换 四参数/七参数/正形变换 ∈ C# 编程笔记
  • 闭合附和导线近似平差 ∈ C# 编程笔记
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • Matlab 各种画图 ∈ Matlab 使用笔记
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【剑指offer】让抽象问题具体化
  • Brief introduction of how to 'Call, Apply and Bind'
  • Java,console输出实时的转向GUI textbox
  • Java多态
  • MySQL主从复制读写分离及奇怪的问题
  • nginx 配置多 域名 + 多 https
  • October CMS - 快速入门 9 Images And Galleries
  • SpingCloudBus整合RabbitMQ
  • Swoft 源码剖析 - 代码自动更新机制
  • 大数据与云计算学习:数据分析(二)
  • 电商搜索引擎的架构设计和性能优化
  • 最近的计划
  • python最赚钱的4个方向,你最心动的是哪个?
  • #HarmonyOS:基础语法
  • #include
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (13):Silverlight 2 数据与通信之WebRequest
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (poj1.2.1)1970(筛选法模拟)
  • (转)nsfocus-绿盟科技笔试题目
  • (轉貼) UML中文FAQ (OO) (UML)
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net core 连接数据库,通过数据库生成Modell
  • .net 调用php,php 调用.net com组件 --
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @RequestMapping-占位符映射
  • @SuppressWarnings(unchecked)代码的作用
  • [ IO.File ] FileSystemWatcher
  • [ 第一章] JavaScript 简史
  • [1525]字符统计2 (哈希)SDUT
  • [Android View] 可绘制形状 (Shape Xml)
  • [Arduino学习] ESP8266读取DHT11数字温湿度传感器数据
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [C/C++] -- 二叉树
  • [daily][archlinux][game] 几个linux下还不错的游戏
  • [docker] Docker的私有仓库部署——Harbor
  • [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE
  • [hive] 窗口函数 ROW_NUMBER()