通过代码添加的控件的事件如何编写?

news/2024/9/17 9:03:20/文章来源:https://www.cnblogs.com/StephenYoung/p/18367614

背景

这两天在重新复习事件,比如Winform控件的事件,利用vs很方便地实现。比如:想要在窗体加载时,修改窗口的标题;我们只需要双击Form1的标题栏即可;

vs便会给我们生成如下代码,且光标自动定位到方法体中:

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

然后我们在方法体中写上修改窗口标题的代码:

 private void Form1_Load( object sender, EventArgs e ) {this.Text = "通过代码添加的控件的事件";}

运行即可看到效果:

然后我在想,如果是我通过代码添加的控件,比如一个button1,一个texbox1控件,那么在设计时虚拟窗体并不能看到他们,我怎么给他添加事件呢?
为了形成对比我们,在Form1窗体上除了代码添加的一个button1,一个texbox1控件,再手动拖拽一个button2控件;

给窗体添加3个控件

(1)button2直接在虚拟窗体直接上从工具箱拖上去;

(2)重点说明下代码自动生成的button1和textbox1;代码如下:

先定义一个私有方法:

 private void CreatFormLayout(Form form,out TextBox tBox,out Button bton ) {TextBox textBox = new TextBox( );Button button = new Button( );textBox.Location = new Point( 1,1);textBox.Multiline = true;textBox.Size = new Size( 500,200);textBox.Font = new Font("正楷",24f);button.Location = new Point( 1,210);button.Size = new Size( 300,80);button.Text = "我是代码自动生成的按钮,请按我!";tBox = textBox;//textBox输出到对象tBoxbton = button;//button输出对象到btonform.Controls.Add( textBox);form.Controls.Add( button);}

在Main主程序中调用:

public partial class Form1 : Form{private TextBox textBox1;//定义控件字段接受代码输出的控件private Button button1;public Form1( ) {InitializeComponent( );CreatFormLayout(this, out textBox1, out button1);

(3)给button1添加事件:

this.button1.Click += Button1_Click;//事件的第四步——挂接事件

Note:小窍门——

------>
------>

我们在button1的事件处理器(响应事件的方法)中写入代码:

            this.textBox1.Font = new Font("华文新魏", 22.2f, FontStyle.Bold);this.textBox1.Text = "我响应了button1按下的事件。";

点击button1,就是代码自动生成的那个按钮:

点击查看完整示例代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp3
{public partial class Form1 : Form{private TextBox textBox1;//定义控件字段接受代码输出的控件private Button button1;public Form1( ) {InitializeComponent( );CreatFormLayout(this, out textBox1, out button1);this.button1.Click += Button1_Click1;//事件的第四步——挂接事件this.textBox1.Text = "我是代码生成的textbox";}private void Button1_Click1( object sender, EventArgs e ) {this.textBox1.Font = new Font("华文新魏", 22.2f, FontStyle.Bold);this.textBox1.Text = "我响应了button1按下的事件。";}private void CreatFormLayout(Form form,out TextBox tBox,out Button bton ) {TextBox textBox = new TextBox( );Button button = new Button( );textBox.Location = new Point( 1,1);textBox.Multiline = true;textBox.Size = new Size( 500,200);textBox.Font = new Font("正楷",24f);button.Location = new Point( 1,210);button.Size = new Size( 300,80);button.Text = "我是代码自动生成的按钮,请按我!";tBox = textBox;//textBox输出到对象tBoxbton = button;//button输出对象到btonform.Controls.Add( textBox);form.Controls.Add( button);}private void button2_Click( object sender, EventArgs e ) {this.textBox1.Text = "我是button2按下。";}private void Form1_Load( object sender, EventArgs e ) {this.Text = "通过代码添加的控件的事件";button2.Size = new Size(300, 80);button2.Location = new Point(1, 300);}}
}

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

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

相关文章

Visual Studio 2013 jsoncpp 0.10.7库编译

前言全局说明Visual Studio 2013 jsoncpp 编译jsoncpp 介绍说明: https://www.cnblogs.com/wutou/p/18367551一、说明 环境: Windows 7 旗舰版 Visual Studio 2013二、选择根据vs2013工具环境和 jsoncpp 介绍,这里选用 0.10.7 版本演示三、准备 3.1 解压文件 进入 makefiles\…

Blazor开发框架Known-V2.0.8

V2.0.8 Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行。目前已有部分客户在使用,最近客户的项目和产品,有的在Docker中运行,有的在重新升级改造中使用达梦数据库。为快速响应客户的需求,本次版本修复了一些BUG、增强了框架内置功能…

11 IIC通讯协议

目录前言一、IIC介绍1.IIC的时序2.使用IIC对从机寄存器的写操作流程3.使用IIC对从机寄存器的读操作流程二、软件实现IIC协议1.GPIO口配置2.IIC开始信号3.IIC结束信号4.发送数据5.接收数据6.接收ACK响应7.发送ACK和NACK响应8.对寄存器进行写处理9.对寄存器进行读处理三、硬件实现…

判断是否为同构字符串

要想解答这个算法,得明白一个概念,什么是同构字符串,来看一下定义:也就是说,s可以转化为t,对应的t也可以转化为s。解决思路: 我们进行一次的遍历,然后定义了两个dict,来记录s->t,t->s的映射,然后在后面校验一下,这两个dict的value 是否是相同的,来上代码。c…

Gradle编译项目Druid找不到tools.jar和jconsole.jar

原因:jdk11之后不支持druid的两个依赖 方法一:<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.5</version>方法二:<!-- <exclusions> <exclusion> …

鸿蒙开发ArkUI沉浸式导航

1.沉浸式导航的效果是占用底部顶部或者其他挖孔区域的位置 沉浸式的样式 非沉浸式的样式 2.实现方式有三种实现放1.全局(Ability)2.页面3.指定元素全局的实现方式(Ability) 在你的Ability 中设置 在页面创建完成后 (onWindowStageCreate) 中onWindowStageCreate(windowStage…

Python 实现Word和TXT文本相互转换

Word文档(.doc或.docx)和纯文本文件(.txt)是两种常用的文件格式。Word文档通常用于复杂的文档处理和排版,而纯文本文件则用于存储和传输纯文本信息。了解如何在这两种格式之间进行转换能提高工作效率,并便于文件管理。本文将详细介绍如何使用Python实现Word和TXT文件格式…

Python一些简单基础的模板化语法

字符串的格式化 %s:可以接收任何类型的传值(%d只可以接收整型int)单个值 "my age is %s" %"18.56"按照值对应 res = "my name is %s,my age is %s" %("xj",18)按照字典传值 res = "my name is %(name)s,my name is %(age)s&q…

Windows下cmd中cd命令不起作用的原因和解决办法

Windows下cmd中cd命令不起作用的原因和解决办法如图:cd命令无效 原因:windows系统cmd换目录跨磁盘的话需要先进行磁盘的转换

VisualStudio 产生的.sdf和.ipch文件删除、不生成

前言全局说明VisualStudio 产生的.sdf和.ipch文件删除、不生成一、说明 环境: Windows 7 旗舰版 Visual Studio 2013二、原因 某天,打算给 vs2013 的一个工程,打包备份,打包后,发现压缩包有 90MB ,看到数字确实很惊讶。 因为这个工程就是画了几个按钮的小功能,怎么会这么…

Docker 容器中镜像导出/导入

利用容器中镜像导出/导入 创建一个简单的Docker镜像 利用docker ps -a命令查看要导出的镜像。 导出 查看要导出的镜像 [root@localhost ~]# docker ps -adocker export命令进行镜像导出。 [root@localhost ~]# docker export 418ae > nginx-docker.tar导入 [vipsoft@kafka1h…

算法与数据结构——时间复杂度

时间复杂度 运行时间可以直观且准确地反映算法的效率。要准确预估一段代码的运行时间,应该进行如下操作。确定运行平台,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。 评估各种计算操作的运行时间,例如加法操作需要1ns,乘法操作需要10ns,打印操作…