news 2026/4/23 13:06:51

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/4/16 1:29:55

GBK转UTF-8终极指南:告别乱码困扰的简单方案

GBK转UTF-8终极指南&#xff1a;告别乱码困扰的简单方案 【免费下载链接】GBKtoUTF-8 To transcode text files from GBK to UTF-8 项目地址: https://gitcode.com/gh_mirrors/gb/GBKtoUTF-8 还在为Windows和Linux系统间的文件编码问题而烦恼&#xff1f;GBK to UTF-8编…

作者头像 李华
网站建设 2026/4/16 0:53:05

多功能抽奖软件:游戏化互动体验

软件介绍 今天要介绍的这款工具是“自动抽奖系统”&#xff0c;它是一款功能丰富的抽奖软件&#xff0c;不仅支持常规抽奖和游戏抽奖&#xff0c;还提供了丰富的自定义设置选项&#xff0c;让抽奖活动更加灵活有趣。 核心功能 这款软件的功能非常全面&#xff0c;包括基础的…

作者头像 李华
网站建设 2026/4/18 17:14:59

VibeVoice-WEB-UI是否支持语音生成暂停恢复?中断续传

VibeVoice-WEB-UI 是否支持语音生成的暂停与恢复&#xff1f;关于“中断续传”的深度解析 在播客制作人深夜调试一集45分钟的AI对谈音频时突然断电&#xff0c;或是有声书创作者面对长达数小时的文本反复重试生成任务——这些场景并不罕见。随着内容长度和复杂度不断提升&#…

作者头像 李华
网站建设 2026/4/23 11:15:20

JFlash怎么烧录程序:NAND Flash坏块管理操作指南

JFlash烧录实战&#xff1a;NAND Flash坏块管理全解析 在嵌入式开发的产线现场&#xff0c;你是否曾遇到这样的尴尬&#xff1f; 程序明明已经成功下载&#xff0c;设备上电却无法启动——排查半天才发现&#xff0c;是某个关键页恰好落在了 出厂坏块 上。更糟的是&#xff…

作者头像 李华
网站建设 2026/4/22 11:37:51

对比评测:Powershell 2.0 vs 5.0 核心功能效率差异

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个性能对比测试脚本&#xff0c;测量以下场景在PS 2.0和5.0下的表现&#xff1a;1) 1000次文件读写 2) 大型CSV数据处理 3) 远程会话建立速度 4) 模块加载时间。输出带图表的…

作者头像 李华
网站建设 2026/4/23 11:15:05

LLAMAINDEX对比传统索引:效率提升300%的秘诀

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个性能对比测试平台&#xff0c;比较LLAMAINDEX与传统数据库索引&#xff08;如MySQL的B树索引&#xff09;在不同数据规模&#xff08;1万到1000万条记录&#xff09;下的表…

作者头像 李华