【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox

文章目录

    • 1.WinForm文件结构
    • 2. 窗体的常用属性、方法与事件
      • 2.1 常用属性(可直接在属性中设置)
      • 2.2 常用方法
      • 2.3 常用事件
    • 3.Label、TextBox及Button控件
    • 4.RadioButton和CheckBox
    • 5.ListBox(列表框)

1.WinForm文件结构

.sln文件 :解决方案文件 位置引用
bin文件夹: 存放项目的编译结果 exe dll debug 调试 release 发布 pdb 位置信息–调试
obj文件夹 object 编译过程中生成的中间临时文件 加快编译速度
Properties 引用 添加引用 --选择需要的程序集
App.config 配置文件
.csproj 项目文件 位置引用 双击打开项目

Program.cs :程序入口

Form.cs 源代码(窗口处理代码)
Form.Designer.cs 窗体布局代码 自动生成对应的控件代码
Form.resx 窗体的资源

2. 窗体的常用属性、方法与事件

image-20231023181932153

2.1 常用属性(可直接在属性中设置)

属性名称描述示例代码
Text窗体的标题this.Text = "My Application";
Size窗体的尺寸this.Size = new Size(800, 600);
Location窗体在屏幕上的位置this.Location = new Point(100, 100);
WindowState窗体的状态(正常、最小化、最大化)this.WindowState = FormWindowState.Maximized;
BackColor窗体的背景颜色this.BackColor = Color.Red;
FormBorderStyle窗体边框的样式this.FormBorderStyle = FormBorderStyle.FixedDialog;
StartPosition窗体的初始位置this.StartPosition = FormStartPosition.CenterScreen;

2.2 常用方法

方法名称描述示例代码
Show()显示窗体this.Show();
ShowDialog()模态显示窗体this.ShowDialog();
Hide()隐藏窗体this.Hide();
Close()关闭窗体this.Close();
Activate()激活窗体this.Activate();
Invalidate()强制重新绘制窗体this.Invalidate();

Show()ShowDialog() 是用于显示窗体的两个不同方法,区别如下:

  • Show()

    • 非模态窗体(Non-modal): 当你使用 Show() 方法显示一个窗体时,用户可以自由地在新打开的窗体和原窗体之间切换。

    • 并行交互: 用户可以同时与父窗体和子窗体交互。

    • 代码继续执行: 在 Show() 方法后面的代码会立即执行,不会等待新打开的窗体关闭。

  • ShowDialog()

    • 模态窗体(Modal): 当你使用 ShowDialog() 打开一个窗体时,用户必须首先关闭该窗体才能继续与父窗体交互。

    • 串行交互: 用户在关闭新窗体之前不能与父窗体交互。

    • 代码等待: ShowDialog() 后面的代码会等待用户关闭新打开的窗体才会执行。

2.3 常用事件

事件名称描述示例用途
Load窗体加载时触发初始化窗体内容
Click在窗体上单击时触发处理单击事件
MouseMove鼠标在窗体上移动时触发实现自定义的鼠标跟踪
KeyPress键盘按键被按下时触发处理键盘输入
FormClosing窗体即将关闭时触发弹出确认对话框或保存设置
Resize窗体尺寸改变时触发动态调整控件位置和大小

3.Label、TextBox及Button控件

Label(标签)控件:

  1. 属性:
    • Name:控件的名称,用于在代码中引用它,一般以lbl开头,例如: lblUserName
    • Text:设置或获取显示在标签上的文本信息。
    • Image:用于显示图像。
    • ImageList:图像集控件。
    • Size:控件的尺寸,包括Width和Height。
    • Tag:与控件相关的自定义数据。
    • Enabled:确定是否启用标签。
    • Location:控件在窗体上的位置,包括X和Y坐标。
  2. 事件:
    • Click:当用户单击标签时触发。
    • TextChanged:当标签的文本内容发生更改时触发。

TextBox(文本框)控件:

  1. 属性:
    • Name:控件的名称。一般以txt开头,例如:txtUserName
    • Text:用于输入和获取文本信息。
    • MultiLine:确定文本框是否支持多行文本输入。
    • WordWrap:确定是否可以自动换行。
    • PasswordChar:指定密码框中的密码字符。
    • Size:控件的尺寸。
    • Enabled:确定是否启用文本框。
    • Location:控件在窗体上的位置。
  2. 方法:
    • AppendText(text):将指定的text文本追加到文本框的末尾。
    • Clear():清除文本框中的文本。
    • Focus():使文本框获取焦点。
    • Select():选择文本框中的文本。
    • SelectAll():选择文本框中的所有文本。
  3. 事件:
    • TextChanged:当文本框的文本内容发生更改时触发。
    • Click:一般不用于文本框,通常用于按钮等控件。

Button(按钮)控件:

  1. 属性:
    • Name:控件的名称。
    • Text:用于显示在按钮上的文本。
    • BackgroundImage:背景图片。
    • Image:按钮上显示的图像。
    • BackColor:背景色。
    • ForeColor:文本颜色。
    • Visible:确定按钮是否可见。
  2. 事件:
    • Click:当用户单击按钮时触发,通常用于执行与按钮相关的命令。

案例:做一个简单的登录界面

image-20231024105614900

代码

 public partial class FrmUser : Form{public FrmUser(){InitializeComponent();txtName.Text = "请输入账户";txtPassword.Text = "请输入密码";txtName.ForeColor = Color.Gray;txtPassword.ForeColor = Color.Gray;}private void Form1_Load(object sender, EventArgs e) //sender事件触发的对象{}private void textBox2_TextChanged(object sender, EventArgs e){txtPassword.ForeColor = Color.Black;}private void txtName_TextChanged(object sender, EventArgs e){txtName.ForeColor = Color.Black;}private void button2_Click(object sender, EventArgs e){string UserName = txtName.Text.Trim();string userPwd = txtPassword.Text;if (string.IsNullOrEmpty(UserName) || UserName == "请输入账户"){MessageBox.Show("请输入用户名!", "登录页面", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}if (string.IsNullOrEmpty(userPwd) || UserName == "请输入密码"){MessageBox.Show("请输入密码!", "登录页面", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}MessageBox.Show("登录成功!", "进入主界面中....", MessageBoxButtons.OK, MessageBoxIcon.Information);}private void btn_Click(object sender, EventArgs e){this.Close();}}

代码实现了一个基本的用户登录界面,用户可以输入用户名和密码,点击 “登录” 按钮进行登录,或者点击 “关闭” 按钮关闭窗体。同时,也包含了一些用户友好的功能,如在文本框中显示提示文本,输入文本时改变文本颜色,以及在输入验证时显示错误消息框。

image-20231024110514232
image-20231024110446593

4.RadioButton和CheckBox

RadioButton(单选按钮)

RadioButton 用于在一组选项中选择单一选项。在一组单选按钮中,只能选中其中一个,互相排斥。

属性

  • Name: 控件的名称
  • Text: 显示在界面上的文本
  • Checked: 是否被选中,返回布尔值
  • AutoCheck: 自动更改其他 RadioButton 的选中状态,默认为 true。

事件

  • CheckedChanged: 当选中状态改变时触发该事件。

应用场景

  • 角色选择登录
  • 性别选择

分组与代码操作: RadioButton 控件通常会放在一个 GroupBox 控件内,以形成一个逻辑分组,从而在这个分组中只能选择一个选项。通过代码也可以轻易地改变 RadioButton 的状态,例如 radioButton1.Checked = true;

事件处理: 你可以在 CheckedChanged 事件的事件处理器中添加逻辑,以响应用户的操作。例如:

csharpCopy codeprivate void radioButton1_CheckedChanged(object sender, EventArgs e)
{if (radioButton1.Checked){// 执行某些操作}
}

CheckBox(复选框)

CheckBox 用于在一组选项中选择一个或多个项。

属性

  • Name: 控件的名称
  • Text: 显示在界面上的文本
  • Checked: 是否被选中,返回布尔值。
  • AutoCheck: 单击时自动更改选中状态,默认为 true,通常不要去修改这个属性。
  • CheckState: 表示三种不同的状态——未选中、选中、中间状态。
  • ThreeState: 控制 CheckBox 是三种状态还是两种,默认为 false。

事件

  • CheckedChanged: 当 Checked 属性值改变时触发。
  • CheckStateChanged: 当 CheckState 改变时触发。

事件触发顺序

  1. CheckedChanged(Checked 属性值改变)
  2. CheckStateChanged(CheckState 改变)

应用场景

  • 权限分配
  • 角色分配

高级用法与代码操作: 当 ThreeState 属性设置为 true 时,CheckBox 可以有三种状态:未选中、选中和中间状态。这在一些复杂的场景中(例如,批量操作)可能会很有用。通过代码也可以轻易地改变 CheckBox 的状态,例如 checkBox1.Checked = true;checkBox1.CheckState = CheckState.Indeterminate;

事件处理: 你可以在 CheckedChangedCheckStateChanged 事件的事件处理器中添加逻辑,以响应用户的操作。例如:

csharpCopy codeprivate void checkBox1_CheckedChanged(object sender, EventArgs e)
{if (checkBox1.Checked){// 执行某些操作}
}

示例:

 public partial class frmSubmit : Form{public frmSubmit(){InitializeComponent();}private void btnCancel_Click(object sender, EventArgs e){this.Close();}private void btnOk_Click(object sender, EventArgs e){MessageBox.Show("提交成功!", "提交完成", MessageBoxButtons.OK, MessageBoxIcon.Information);}private void rdWriter_CheckedChanged(object sender, EventArgs e){DialogResult result = MessageBox.Show("确定切换吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);// 判断用户的选择if (result == DialogResult.OK){// 用户选择了 OK,执行相应的操作// 这里可以放置你想要执行的代码}else if (result == DialogResult.Cancel){// 用户选择了 Cancel,可以选择不执行任何操作// 或者放置一些取消操作的代码}}}

上面代码包含了按钮点击事件和单选按钮选择事件的处理逻辑。在用户与窗体进行交互时,它会显示消息框以获得用户的确认或取消操作,并根据用户的选择执行相应的操作。

在这里插入图片描述

5.ListBox(列表框)

ListBox 是 Windows Forms 中的一个控件,用于显示一列可选项,用户可以选择一项或多项。

属性

  • Name: 控件的名称
  • Items: 列表框中的项集合,可以通过它来添加、移除和操作列表中的项。
  • DataSource: 数据源,用于绑定 ListBox 到外部数据源,通常与 DisplayMemberValueMember 属性一起使用。
  • DisplayMember: 指定绑定数据源时显示的字段的名称。
  • ValueMember: 指定绑定数据源时用作值的字段的名称。

事件

  • SelectedIndexChanged: 当选择项更改时触发的事件,可以用于捕捉用户的选择变化。

示例:

public partial class FrmListBox : Form
{public FrmListBox(){InitializeComponent();}private void FrmListBox_Load(object sender, EventArgs e){//项的清除listBox1.Items.Clear();//避免控件闪烁的问题listBox1.BeginUpdate();//闪烁//for循环等加载大量的项 listBox1.EndUpdate();//添加项listBox1.Items.Add(123);listBox1.Items.Add("jason");string[] list = { "adbc", "admin", "sqlserver" };listBox1.Items.AddRange(list);listBox1.Items.Insert(3, "micosoft");int index = listBox1.Items.IndexOf("admin");//获取索引bool bl = listBox1.Items.Contains("sqlserver");//存在listBox1.Items.Remove("admin");listBox1.Items.RemoveAt(3);}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/169477.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NFTScan | 10.16~10.22 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2023.10.16~ 2023.10.22 NFT Hot News 01/y00ts:迁移回以太坊的跨链桥已上线,将承担第一天所有 Gas 费 10 月 16 日,y00ts 发推称,将 y00…

scrapy的安装和使用

一、scrapy是什么:Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序 二、scrapy的安装:pip install scrapy -i https://pypi.douban.com/…

vscode类似GitHub Copilot的插件推荐

由于GitHub Copilot前段时间学生认证的账号掉了很多,某宝激活也是价格翻了几倍,而却,拿来用一天就掉线,可以试试同类免费的插件哦。 例如:TabNine,下载插件后,他会提示你登录,直接登…

x-ui部署(与宝塔共存)

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家来访。 x-ui是一个搭建节点的工具,有一键安装脚本,可以快速的部署。但是如果我…

分代ZGC详解

ZGC(Z Garbage Collector)是Java平台上的一种垃圾收集器,它是由Oracle开发的,旨在解决大堆的低延迟垃圾收集问题。ZGC是一种并发的分代垃圾收集器,它主要针对具有大内存需求和低停顿时间要求的应用程序 分代ZGC收集器…

JVM相关的面试题

一、什么是程序计数器 二、简要的介绍一下堆 三、什么是虚拟机栈 四、能不能解释下方法区 五、你听过直接内存吗? 六、什么是类加载器,类加载器有哪些 七、什么是双亲委派模型 八、JVM为什么采用双亲委派机制 九、类装载的执行过程 十、对象什么时候被垃…

粤嵌实训医疗项目day02(Vue + SpringBoot)

目录 一、创建vue项目并运行 二、vue-cli中的路由使用 三、element-ui框架、实现页面布局以及vue-路由 四、前端登录页面 五、user登录后端接口完善【后端】 六、user登录前端-请求工具-请求发起【前端】 七、请求的跨域-访问策略 八、完善项目的页面布局、导航菜单以及…

Nginx 防盗链

nginx防盗链问题 盗链: 就是a网站有一张照片,b网站引用了a网站的照片 。 防盗链: a网站通过设置禁止b网站引用a网站的照片。 nginx防止网站资源被盗用模块 ngx_http_referer_module 如何区分哪些是不正常的用户? HTTP Referer…

2023年信息科学与工程学院学生科协第一次前端培训

目录 一、前端是什么?前端能做什么?前端需要做什么?现阶段如何理解前端 二、前端学习路线html是什么?css是什么?什么是jshtml、css以及js关系掌握三种语言之后的学习路线 三、HTML基础语法标题段落文本换行文本标签图像…

Calibre拾遗:FDI (Foreign Database Interface)系统简介

Calibre是强大的GDS处理工具,包括查看,验证,分析等操作,操作由浅入深,除过手动编辑GDS的不是很灵活外,其他各种命令和操作策略,都是远(遥)远(遥)走…

视频去噪网络BSVD的实现

前些天写了视频去噪网络BSVD论文的理解,详情请点击这里,这两个星期动手实践了一下,本篇就来记录一下这个模型的实现。 这个网络的独特之处在于,它的训练和推理在实现上有所差别。在训练阶段,其使用了TSM(T…

IP地址SSL证书 IP证书

在许多企业用例中,公司需要SSL证书作为IP地址。公司使用IP地址通过Internet访问各种类型的应用程序。 公网IP地址的SSL证书: 内部IP(也称为私有IP)是IANA设置为保存的IPv4或IPv6地址,例如: RFC 1918范围内…

【JavaEE】CAS -- 多线程篇(7)

CAS 1. 什么是 CAS2. CAS 伪代码3. CAS 是怎么实现的4. CAS的应用4.1 实现原子类4.2 实现自旋锁 5. CAS 的 ABA 问题 1. 什么是 CAS CAS: 全称Compare and swap,字面意思:”比较并交换“能够比较和交换 某个寄存器中的值和内存中的值, 看是否相等, 如果相等, 则把另…

Java面试(JVM篇)——JVM 面试题合集 深入理解JVM虚拟机

关于什么是JVM? 作用: 运⾏并管理Java 源码⽂件所⽣成的Class⽂件,在不同的操作系统上安装不同的JVM ,从⽽实现了跨平台的保证。 ⼀般情况下,对于开发者⽽⾔,即使不熟悉JVM 的运⾏机制并不影响业务代码的…

lvs+keepalived: 高可用集群

lvskeepalived: 高可用集群 keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用,于是keepalived软件。实现的是调度器的高可用。 但是:keepalived不是专门为集群服务的,也可以做其他服务器的高可用。 lvs的高可用集群&#xf…

防止消息丢失与消息重复——Kafka可靠性分析及优化实践

系列文章目录 上手第一关,手把手教你安装kafka与可视化工具kafka-eagle Kafka是什么,以及如何使用SpringBoot对接Kafka 架构必备能力——kafka的选型对比及应用场景 Kafka存取原理与实现分析,打破面试难关 防止消息丢失与消息重复——Kafka可…

Hadoop3教程(三十五):(生产调优篇)HDFS小文件优化与MR集群简单压测

文章目录 (168)HDFS小文件优化方法(169)MapReduce集群压测参考文献 (168)HDFS小文件优化方法 小文件的弊端,之前也讲过,一是大量占用NameNode的空间,二是会使得寻址速度…

Redis数据类型——list类型数据的扩展操作

1.list阻塞式数据获取 2.list类型数据业务场景

电脑软件:推荐一款非常强大的pdf阅读编辑软件

目录 一、软件简介 二、功能介绍 1、界面美观,打开速度快 2、可直接编辑pdf 3、非常强大好用的注释功能 4、很好用的页面组织和提取功能 5、PDF转word效果非常棒 6、强大的OCR功能 三、软件特色 四、软件下载 pdf是日常办公非常常见的文档格式,…

基于RM编译码的协作MIMO系统误码率matlab仿真,对比不同RM编译码参数

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2013b 3.部分核心程序 ...................................................................... [V1,N1,K1,I1] f…