C#用户控件usercontrol中的子控件事件及属性的传递

2024-08-21 19:44

本文主要是介绍C#用户控件usercontrol中的子控件事件及属性的传递,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

也不知道这个标题怎么写,但是问题是个老问题,大家都可能遇到过,不过有同学问到,那就写出来。其实很简单。只不过有的同学看了其他博文后脑子还是懵懵的。所以这里就分两部分来说明一下。

文章目录

  • 一、属性的传递
    • 1、原理
    • 2、步骤
    • 3、实例代码
  • 二、事件传递
    • 1、原理
    • 2、步骤
    • 3、实例代码

文章原出处: https://blog.csdn.net/haigear/article/details/141399915

一、属性的传递

你的要求其实很简单,就是在主窗体的代码中能够控制userControl中的某控件的属性,比如文本属性,这里我们就以userControl中的textBox的text属性为例子来说明其原理和步骤:

1、原理

通过设置属性的方式传递,这个与你给一个类添加任意的属性是一回事。这不多讲了,如果这个基础都没有,那么你就要恶补一下C#的基础了。你也可以参考一下我前面出的专门介绍用户控件的博文。

2、步骤

首先,我们在用户控件类中声明你想要传递的子控件对外的名称,这里我们好比定好了为analyzicText ,实现的方法就是使用最简单的set 与get来分别来设置和获取你要传递控件的值(假定你要传递的控件为textBox1)。

完成上述步骤后,编译一次你的工程,你就会在你的用户控件中看到刚刚我们设置的这个属性的名称,效果如下:
在这里插入图片描述

3、实例代码

用户控件中的代码

  [Description("参考分析内容")]  //新建控件说明 用来描述控件的作用public string analyzicText {get { return textBox1.Text; }  set                           {textBox1.Text=value;}}
 private void TestForm_Load(object sender, EventArgs e){answerControl1.analyzicText = "这里就是答案分析的文本框内容了";}

我们为了方便举例,就直接在form的load事件中调用了,我们前面的用户控件answerControl1de 的analyzicText 属性
在这里插入图片描述

二、事件传递

在主窗体的代码中能够控制userControl中的某控件的事件,比如单击事件、鼠标拖动事件等,这里我们就以userControl中的Button的click事件为例子来说明其原理和步骤:

1、原理

通过事件代理来完成,没有基础的需要参考我们前面的介绍C#代理相关的博文。

2、步骤

首先,我们必须在用户控件中声明一个事件代理,然后将想要传递事件的控件的对应事件,比如这里我们就传递button_click,那么就在控件编辑状态下双击按钮,自动生成button_click事件,在事件中写一个触发语句即可:SubmitClick?.Invoke(this, EventArgs.Empty);
最后,我们启动工程编译一下,就可以在主窗体下的用户控件中看到这个事件名称了,这里我们使用的是SubmitClick,双击之后就可以使用了(无须单独做事件绑定,因为双击的时候系统自动为你在form.designer.cs中为你绑定了)

在这里插入图片描述

3、实例代码

  [Description("提交的点击事件")]public event EventHandler SubmitClick;  //声明一个事件private void button3_Click(object sender, EventArgs e){SubmitClick?.Invoke(this, EventArgs.Empty);}

窗体中的调用代码:

        private void navigationControl1_SubmitClick(object sender, EventArgs e){MessageBox.Show("Submit");}

如果要手动绑定,就使用这样的方式,其实系统会为你自动绑定:

this.navigationControl1.SubmitClick += new System.EventHandler(this.navigationControl1_SubmitClick);

点击后触发的效果:
在这里插入图片描述
对于自定义事件,我们在用户控件中则要单独自己绑定为好,而且用户控件内的事件代码实现也不一样,下一篇我们单独介绍。
文章可能随时更新,请关注文章原出处:https://blog.csdn.net/haigear/article/details/141399915

这篇关于C#用户控件usercontrol中的子控件事件及属性的传递的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094109

相关文章

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

FreeRTOS内部机制学习03(事件组内部机制)

文章目录 事件组使用的场景事件组的核心以及Set事件API做的事情事件组的特殊之处事件组为什么不关闭中断xEventGroupSetBitsFromISR内部是怎么做的? 事件组使用的场景 学校组织秋游,组长在等待: 张三:我到了 李四:我到了 王五:我到了 组长说:好,大家都到齐了,出发! 秋游回来第二天就要提交一篇心得报告,组长在焦急等待:张三、李四、王五谁先写好就交谁的

C# dateTimePicker 显示年月日,时分秒

dateTimePicker默认只显示日期,如果需要显示年月日,时分秒,只需要以下两步: 1.dateTimePicker1.Format = DateTimePickerFormat.Time 2.dateTimePicker1.CustomFormat = yyyy-MM-dd HH:mm:ss Tips:  a. dateTimePicker1.ShowUpDown = t