首页 > 其他分享 >通过代码添加的控件的事件如何编写?

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

时间:2024-08-19 16:56:51浏览次数:12  
标签:控件 button private button1 添加 编写 new textBox

0 背景

这两天在重新复习事件,比如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控件;

1 给窗体添加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输出到对象tBox
            bton = button;//button输出对象到bton
            form.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);

2 给代码添加的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输出到对象tBox
            bton = button;//button输出对象到bton
            form.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);
        }
    }
}

标签:控件,button,private,button1,添加,编写,new,textBox
From: https://www.cnblogs.com/StephenYoung/p/18367614

相关文章

  • Delphi 的 TMS 控件安装方法
    * 参考:tmsxdataaurliussparkle的手工安装(XE7)--------------------------------------------------------------------------------------------说明:下述安装方法的意思是:1)将所有包项目的编译结果放在 /Bin目录中,并将/Bin路径,放入系统变量Path的查找路径中。因编译......
  • sonarqube添加一条自定义规则,扫描文件中出现的username和password,方法二,使用implement
    特别指出: 所以,sonarqube默认过滤掉了resources下的文件;以下代码可以扫出yml/xml/properties等文件中的敏感字符,当然是放在src/main下的,不是resources;下载源码与使用详情参考:Sonarqube自定义规则,部署SonarSource/sonar-java源码中示例规则:docs/java-custom-rules-exam......
  • winform工具箱安装其他控件
     下载对应的控件dll文件一,新建Winform项目或者打开您已有的Winform项目,选择窗体,显示窗体设计器界面,点击“视图”-“工具箱”,显示工具箱,如下图: 在工具箱,点击鼠标右键,添加选项卡 输入对应控件名 在工具箱中选中选中DEMO选项卡。 安装方法一:根据提示“此组中没有可......
  • sonarqube添加一条自定义规则,扫描文件中出现的username和password,方法一
    下载源码与使用详情参考:Sonarqube自定义规则,部署SonarSource/sonar-java源码中示例规则:docs/java-custom-rules-example-yxchun-博客园(cnblogs.com)假设你已经有了sonarqube-java源码,并且已经把sonarqube部署到电脑上1、在check里面创建文件 MyTxtBlockCheck.javap......
  • 界面控件DevExpress ASP.NET Web Forms v24.1最新版本系统环境配置要求
    本文档包含有关安装和使用 DevExpressASP.NETWebForms控件的系统要求的信息。点击获取DevExpressv24.1正式版.NETFrameworkDevExpressASP.NETWebForms控件支持以下.NET框架版本。如果您需要DevExpress产品的早期版本,请咨询“在线客服”获取。IDEDevExpressASP.......
  • 在前面定义的 Person 类中添加两个构造器: 第一个无参构造器:利用构造器设置所有人的 ag
    1publicclassConstructorExercise{2//编写一个main方法3publicstaticvoidmain(String[]args){4Personp1=newPerson();//无参构造器5//下面输出name=null,age=186System.out.println("p1的信息name="+p......
  • 在Echarts中的图表中添加水印
    在Echarts中添加水印可以帮助你保护你的图表不被非法复制。水印可以是一个文本字符串、图像或两者的组合,它可以添加到图表的背景、标题或其他可见元素上。以下是如何在Echarts中添加水印的步骤:1创建水印首先,你需要创建一个水印。这可以是文本、图像或其他任何你想要的形状......
  • extern在头文件中添加是否必要?(C/C++)
    在C和C++编程中,extern关键字通常用于表示函数或变量的声明(而非定义),特别是在跨文件使用时。尽管在函数声明中使用extern不是强制性的,但它有特定的作用,尤其在变量声明方面。让我们深入探讨一下。1.函数声明的基本概念当你在头文件中声明一个函数时,通常只需要提供函......
  • Qt/C++地图标注点的添加删除移动旋转/指定不同图标和动图/拿到单击信号
    一、前言说明标注点在地图开发中是最常见的应用场景之一,比如在地图上需要显示设备的位置,基本上都是添加标注点,指定图片和尺寸已经经纬度坐标位置。这个功能在每种地图内核中都提供的,这个并没有任何难点,在这个功能点上最大难题或者说是设计细节就是,标注点该如何对齐,比如水滴形状的......
  • springboot项目中mybatis的dao接口实现类是如何添加到spring容器中的
    一、@Mapper注解在springboot+mybatis的工程中,如果不做特殊配置,mybatis会查找有@Mapper的接口创建其代理对象添加到spring容器中,接下来就来分析下这个是如何实现的。关键点就在MybatisAutoConfiguration这个自动配置类中publicclassMybatisAutoConfiguration{//这个配......