news 2026/7/8 2:18:29

C#基础--Windows Form基础:按钮、事件多播、PictureBox图片控件、Panel控件、代码创建控件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#基础--Windows Form基础:按钮、事件多播、PictureBox图片控件、Panel控件、代码创建控件

01按钮事件

按钮使用的是Button

Button 常用的属性有:

1 UseWaiCursor: 是否使用 等待鼠标类型

2 backgroundImage: 背景图

3 backgroundImagelayout: 背景图分布方式:

tile:如果图片过小生成多张图片; stretch拉伸图片以适应控件大小; zoom按照图像原比例进行缩放图片

4 TextAlign: 对齐的方式

5 Dock 控件的停靠方式 设置处于父控件的哪个方向 top: 处于父控件上面

事件: 触发函数的行为 例如在点击的时候调用一个函数 需要给按钮绑定一个点击事件
事件也有很多种类 鼠标的点击事件,输入框的textbox的TextChanged文本输入事件,键盘事件等等

label的点击事件

private void label1_Click(object sender, EventArgs e) { }

按钮的点击事件

1 直接点击窗体上的按钮 2 按钮界面闪电标识符号找到对应事件名 点击生成一个事件

private void button1_Click(object sender, EventArgs e) { //textBox1.Text 输入框的文本内容 //label2.Text label2的文本 label2.Text = textBox1.Text; }

输入的文本

private void textBox1_TextChanged(object sender, EventArgs e) { //输入文本的时候触发 label2.Text = textBox1.Text; }

Form界面

事件多播

可以对一个控件通过使用+=或者-=进行添加事件或者删除事件

绑定事件也可以代码进行事件绑定

button1 绑定button3_Click方法 button3也是绑定了button3_Click方法 事件函数sender就是可变的

Click 点击事件

this.button1.Click += button3_Click; this.button2.Click += new System.EventHandler(button3_Click);//button2绑定了button3_Click方法

按钮3的绑定事件

private void button3_Click(object sender, EventArgs e) { //参数1 object sender;代表当前点击对象 例如目前sender就是button3 一般使用sender必须强制转换指定控件类型 //参数2 EventAtgs e ; 获取当前事件对象包含当前事件的一些信息 Button b1 =(Button)sender; //第一种 获取当前点击的按钮的标题 MessageBox.Show(button3.Text); //第二种 方法获取标题 MessageBox.Show(b1.Text+e.ToString()); }

Button4 添加事件

private void button4_Click(object sender, EventArgs e) { this.button1.Click += button6_Click;//给按钮1绑定一个button6_Click的方法 this.button3.Click += button6_Click; }

Button5 移除事件

private void button5_Click(object sender, EventArgs e) { this.button1.Click -= button6_Click;// 给按钮1移除一个 button6_Click的方法 this.button3.Click -= button6_Click; }

Button6 点击弹窗的功能

private void button6_Click(object sender, EventArgs e) { MessageBox.Show("永恒燃烧的羽翼,带我脱离凡间的沉沦"); }

Form界面

PictureBox图片控件

PictureBox是一个展示图片的控件

在属性列表里可以在Image里添加你想要展示的图片

展示网络图片

this.pictureBox1.Load("http://hs1-f2.v3mh.com/image/220926/Rs94nKoSY.webp-w750.jpg");

切换图片

可以添加多张图片使用Button控件切换图片

定义一个count

int count = 1;

切换图片的按钮方法

private void button1_Click(object sender, EventArgs e) { count++; //Image.FromFile 加载图片 this.pictureBox1.Image = Image.FromFile("E:\\from图片\\"+count+".png"); if (count==8) { count = 0; } }

可以通过if判断来重新展示图片

Panel控件

可以添加两个Panel控件来相互切换

切换到panel2

private void button1_Click(object sender, EventArgs e) { //让panel1隐藏 panel2显示 //this.panel1.Visible = false;//Visible 控制控件是否可见 false是不可见 true是可见 //this.panel2.Visible = true; this.panel2.BringToFront();//把panel2带到前面 this.panel1.SendToBack();//把panel1放到最后面 }

切换到panel1

private void button2_Click(object sender, EventArgs e) { //让panel2隐藏 panel1显示 //this.panel1.Visible = true; //this.panel2.Visible = false; this.panel1.BringToFront();//把panel1带到前面 this.panel2.SendToBack();//把panel2放到最后面 }

Form界面

代码创建控件

Form窗体的标题属性更改

this.Text = "Hello"; 窗体的标题属性

代码创建一个Button控件

1 创建一个button对象

Button btn1 = new Button();

2 设置按钮的属性和样式

btn1.BackColor = Color.Red; //背景颜色 btn1.Text = "进入"; //按钮的文本内容 btn1.ForeColor= Color.Green; //字体的颜色 FontFamily f1 = new FontFamily("宋体");//创建一个楷体字体 btn1.Font = new Font(f1,16,FontStyle.Bold);//设置字体为楷体类型 字号为16 加粗字体 btn1.Size = new Size(200,100);//设置button的大小 //btn1.Location = new Point(200, 100);// 修改button的位置 this.DoubleClick += Form1_DoubleClick; btn1.Image = Image.FromFile("1.png");//添加图标 btn1.ImageAlign =ContentAlignment.MiddleLeft;//设置图标对齐方式

3 添加到指定控件

this当前窗体对象 包含了窗体的图标属性 窗体的标题属性 Controls窗体的所有的控件对象

this.Controls.Add(btn1);

例子

创建10个panel 每个panel里面显示图片和label

for (int i = 0; i < 10; i++) { Panel panel = new Panel(); //panel.BackColor =Color.Red;//设置背景颜色 panel.Size = new Size(100,200);//设置panel的大小 宽100 高200 panel.Location = new Point(110*i+20,0); panel.BorderStyle = BorderStyle.FixedSingle;//设置边框 有边框了背景颜色就不需要了 //添加图片到panel上 PictureBox pd = new PictureBox(); pd.Image = Image.FromFile("1.png"); pd.Size = new Size(80,80); pd.SizeMode = PictureBoxSizeMode.StretchImage;//拉伸图片 pd.Left = 10;//设置子控件左边的距离 距离父控件的左边距离 panel.Controls.Add(pd);//添加图片到panel上 //创建一个label对象 Label label = new Label(); label.Text ="嘉贝莉娜"; label.Left = 8; label.Location = new Point(10,120); panel.Controls.Add(label); this.Controls.Add(panel);//窗体上添加panel }

Form界面

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 16:31:20

从Flexbox到Grid:布局效率提升300%的秘诀

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 将一个使用Flexbox实现的网页布局转换为CSS Grid布局。原始布局包含&#xff1a;顶部导航、侧边栏、主内容区和页脚。分析两种实现的代码量、性能和可维护性差异&#xff0c;提供详…

作者头像 李华
网站建设 2026/7/1 13:44:26

基于FPGA的数字频率计高精度算法实现示例

FPGA高精度频率计设计&#xff1a;从算法到实战的深度实践最近在调试一个射频信号监测项目时&#xff0c;我再次被“低频测量不准”这个问题绊住了脚。明明输入的是稳定的10Hz方波&#xff0c;示数却在9.8~10.3Hz之间来回跳动——这背后正是传统测频法的硬伤。于是&#xff0c;…

作者头像 李华
网站建设 2026/7/6 22:54:51

企业营销必备:批量下载竞品视频号内容分析工具

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个企业级视频号内容分析工具&#xff0c;功能包括&#xff1a;1. 批量导入多个竞品视频号链接 2. 自动下载最近30个视频 3. 提取视频元数据(发布时间、点赞数等) 4. 生成内容…

作者头像 李华
网站建设 2026/7/1 13:44:40

对比:手写HTML vs AI生成代码效率实测

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个HTML代码生成效率对比工具。左侧面板显示手动编写标准HTML5文档结构的过程&#xff08;包含<!DOCTYPE html>、<html lang"zh-CN">、head中的meta c…

作者头像 李华
网站建设 2026/7/4 19:37:20

1小时打造TRAE CN数据监控原型系统

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个轻量级的TRAE CN数据监控原型系统。系统需要&#xff1a;1) 实时数据显示面板 2) 关键指标预警功能 3) 简单的历史数据查询 4) 可导出报告功能。使用Python的Flask框架构建…

作者头像 李华
网站建设 2026/7/4 12:21:19

实测:这些方法真的能免费使用Typora

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Typora免费使用指南应用&#xff0c;列出所有合法的免费使用方式&#xff0c;包括教育许可申请步骤、开源替代品比较和限时优惠提醒。应用需包含详细的图文教程和外部链接…

作者头像 李华