【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.mzph.cn/news/117111.shtml

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

相关文章

zabbix6.0 部署配置

架构 先简单介绍zabbix监控的最主要的两个组件: zabbix server zabbix agent server 用来部署 web console以及相关的数据存储,所以需要配合一些数据库来保存数据,比如mysql,pgsql, 又有前端的页面所以还需要配置 nginx 和getway 所以 serve…

Unity 文字显示动画(2)

针对第一版的优化,自动适配文字大小,TextMeshPro可以拓展各种语言。第一版字母类语言效果更好。 using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI;public partial class TextBeat…

基于C#使用winform技术的游戏平台的实现【C#课程设计】

基于C#使用winform技术的游戏平台的实现【C#课程设计】 说明项目结构项目运行截图及实现的功能 部分代码一些说明(个人觉得一些难点的说明)一、ListView ,ImageList 的综合使用二、图片上传以及picturebox 图片的动态替换三、图表插件的使用四、SQL工具类封装五、高…

Mybatis 简介(一)

这里使用的是3.5.11版本 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(P…

【proteus】8086 写一个汇编程序并调试

参考书籍:微机原理与接口技术——基于8086和Proteus仿真(第3版)p103-105,p119-122. 参考程序是p70,例4-1 在上一篇的基础上: 创建项目和汇编文件 写一个汇编程序并编译 双击8086的元件图: …

ant design vue Message 用法以及内容为 html片段情况

ant design vue 的 Message 用法 全局展示操作反馈信息 何时使用 # 可提供成功、警告和错误等反馈信息。顶部居中显示并自动消失,是一种不打断用户操作的轻量级提示方式。 全局配置: // main.ts// 进行全局配置 message.config({top: 0.7rem,//高度…

05 MIT线性代数-转置,置换,向量空间Transposes, permutations, spaces

1. Permutations P: execute row exchanges becomes PA LU for any invertible A Permutations P identity matrix with reordered rows mn (n-1) ... (3) (2) (1) counts recordings, counts all nxn permuations 对于nxn矩阵存在着n!个置换矩阵 , 2. Transpose: 2.…

【数据结构】常见复杂度习题详解 ------ 习题篇

文章目录 📋前言一. ⛳️前篇回顾二. ⛳️常见时间复杂度计算举例1️⃣实例一2️⃣实例二3️⃣实例三4️⃣实例四5️⃣实例五6️⃣实例六7️⃣实例七8️⃣实例八 三. ⛳️常见空间复杂度计算举例1️⃣实例一2️⃣实例二3️⃣实例三 四. ⛳️总结 📋前言 …

高性能计算与多模态处理的探索之旅:英伟达GH200性能优化与GPT-4V的算力加速未来

★多模态大模型;GPU算力;LLMS;LLM;LMM;GPT-4V;GH200;图像识别;目标定位;图像描述;视觉问答;视觉对话;英伟达;Nvidia&#…

交换机控制在同一个网段内的终端,用hybrid接口实现不同的IP通和不通。

实验效果:pc1和pc2不能通,但pc1和pc2分别可以和pc3通。 通过这个实验可以彻底掌握数据包在交换机上的进去的类型状态。 sw1配置: [sw1]dis current-configuration sysname sw1 vlan batch 10 20 100 interface GigabitEthernet0/0/1 port h…

【Redis安装】Ubuntu和Centos

此处安装的是 Redis5 在 Ubuntu 系统上 切换到 root 用户下,su 命令切换使用 apt 可以搜索 redis 相关软件包 apt search redis使用 apt 命令安装 redis apt install redis手动修改配置文件 redis.conf cd /etc/redis/ vim redis.conf修改以下两处 重启服务器 …

chatGPT结构及商业级相似模型应用调研

GPT前言 说明 ChatGPT这项技术的历史可以追溯到2018年,当时由Facebook实验室的团队开发出该技术,以开发聊天机器人为目的。随后,ChatGPT在2019年由来自谷歌的DeepMind团队在国际会议ICLR上发表了论文,其中提出了ChatGPT的技术框架…

计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)

车辆跟踪及测距 该项目一个基于深度学习和目标跟踪算法的项目,主要用于实现视频中的目标检测和跟踪。该项目使用了 YOLOv5目标检测算法和 DeepSORT 目标跟踪算法,以及一些辅助工具和库,可以帮助用户快速地在本地或者云端上实现视频目标检测和…

GDB常用指令与调试汇总

文章目录 前言一、基础二、例子三、用gdb调试多线程程序 前言 GDB(GNU Debugger)是一个强大的调试工具,用于调试C、C等编程语言的程序。本文将介绍一些常用的GDB指令,以及通过例子演示如何使用这些指令进行程序调试。 一、基础 …

【Web】| CSS Float (浮动)的使用方法

Float(浮动)概念 CSS的Float(浮动),会使得元素向左或者向右移动,其它周围元素也会重新排列。 Float浮动,往往是用于图像,但它的布局一样非常有效。 元素如何浮动 元素的水平方向…

小白必看,手把手教你安装Python

目录 一,Python介绍 二,安装 Python 三,各种疑难杂症: 一,Python介绍 Python 是这两年来比较流行的一门编程语言,主要卖点是其相对简单的语法以及丰富的第三方库,下面我来带大家安装、配置 P…

python免杀初探

文章目录 loader基础知识loader参数介绍 evilhiding项目地址免杀方式修改加载器花指令混淆loader源码修改签名加壳远程条件触发修改ico的md5加密 loader基础知识 loader import ctypes #(kali生成payload存放位置) shellcode bytearray(b"shellc…

外网nat+nat server,内网做路由过滤,以及ppp CHAR认证 企业网搭建

作业 网络拓扑图如下所示: 要求:做适当的截图,表示完成相应的操作。 按照网络拓扑要求搭建网络结构,按照个人学号配置每个节点的IP地址,其中X为班级号,Y为学号末尾2位;Y1为学号末尾2位1&#…

KekeBlog项目实战后台模块(二)(已完结)

十一、后台模块-菜单列表 菜单指的是权限菜单,也就是一堆权限字符串 1. 查询菜单 1.1 接口分析 需要展示菜单列表,不需要分页。可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询。菜单要按照父菜单id和orderNum进行排序 请求方式 请求路径…

【JAVA学习笔记】39 - final关键字

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter10/src/com/yinhai/final_ 一、final关键字基本介绍 final可以修饰类、属性、方法和局部变量, 在某些情况下,程序员可能有以下需求,就会使用到final 1)当…