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

news2024/11/29 10:43:13

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

文章目录

  • 一、属性的传递
    • 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个实验带你全面学废网络OSPF协议内容

文章目录 一、OSPF实验与原理1. 多区域与虚链路配置及原理2. OSPF区域与接口认证的方法3. OSPF的Cost 值的作用4. 明白OSPF引入缺省、直连路由、宣告路由方法5. 描述OSPF区域间路由汇总和外部路由汇总6. 描述OSPF的5种类型的LSA区别,以及作用7. 控制OSPF的DR与BDR选…

微信小程序——弹出隐私指引教程(含代码)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

【echarts】ECharts 解决地图标签重叠问题的技术实践

ECharts 解决地图标签重叠问题的技术实践 在使用 ECharts 绘制地图时,遇到的一个常见问题是某些地区的名称标签会因为地理位置接近而出现重叠,导致可读性变差。为了提升地图的展示效果,确保每个地区的名称都能清晰可见,我们可以通…

Java语言程序设计——篇十五(4)

: 🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳…

亦菲喊你来学习之机器学习(7)--逻辑回归内下采样

文章目录 下采样优缺点下采样步骤总结 下采样 在逻辑回归中,下采样是一种处理数据不平衡问题的方法,特别是在处理二分类问题时,如果某一类的样本数量远多于另一类,就可能导致模型偏向于多数类,从而忽略了少数类的特征…

基于推荐算法的景点攻略网站的设计与实现---附源码130855

摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于旅游景点分享也是十分常见的。过去使用传统广告方式对旅游景点进行推荐分享,造成了流程繁琐、难以维护,难于进准推荐给适合需求的人群等问题&#xff0…

java15-网络编程

一 网络编程概述 1.1 网络编程简介 其实,所谓的网络编程,就是编写程序,实现让同一个网络中的机器实现数据的传递,实现通信。 Java是 Internet 的语言,它从语言级上提供了对网络应用程序的支持。 Java提供的网络类库&a…

注册Github账号详细过程

目录 一、准备工作 二、注册步骤 一、准备工作 在注册GitHub账号之前,请确保您已经准备好以下信息: 一个有效的电子邮箱地址:用于接收验证邮件和GitHub的后续通知。 用户名:确保该用户名在GitHub上是唯一的,且符合…

如何选择合适的端口管控软件

一、明确需求 管控的端口类型:首先确定需要管控的端口类型是USB端口,还是需要同时管控串口、并口等其他类型的端口。 管控的力度:确定是需要对所有端口进行统一管控,还是需要根据不同的用户或部门实施不同的策略。 日志记录需求…

图神经网络教程1-综述

目录 前言 介绍 贡献 分类 预备知识 学习方式 转导式学习 归纳学习 系列文章列表 前言 翻译自A Practical Tutorial on Graph Neural Networks,并给出详细的解释和注意事项以及个人的思考,原作者如下: 介绍 当代人工智能(AI)&#x…

最佳实践:CI/CD交付模式下的运维展望丨IDCF

李洪锋 启迪万众数字技术(广州)有限公司 ,产品研发中心-系统运维部、研发效能(DevOps)工程师(中级)课程学员 一、DevOps现状 据云计算产业联盟《中国DevOps现状调查报告2023》显示,国内DevOps 落地成熟度…

JUC阻塞队列(四):DelayQueue

1、DelayQueue介绍 DelayQueue 是一个延迟队列,生产者写入一个数据,这个数据具有被直接消费的延迟时间, 让数据具有延迟的特性。 DelayQueue底层也是基于二叉堆来实现的,DelayQueue本就是基于PriorityBQueue 实现的。 二叉堆结构每…

NCL画出来的图模糊问题处理

问题介绍: 如图所示,NCL画出来的图分辨率比较低,图片比较模糊,怎么将分辨率提高? 解决方法: ; 采用这个方法来定义wkswks_type "png"wks_typewkWidth 2500wks_typewkHeight 2500wks gsn_…

网易、网易互娱、360、头条、商汤等公司面试真题....

测试岗/测试开发岗面试真题 来源与网易、网易互娱、360、头条、商汤等公司面试真题 自我介绍 项目中负责什么? 团队几个人?合作情况 为什么要读研 项目/实习介绍 项目中负责什么? 团队几个人?合作情况 项目的方法怎么改进,和别人方…

微信为什么会限制加好友?

微信限制加好友主要是为了防止垃圾信息和滥用行为,包括以下几个原因: 1、防止骚扰:限制加好友可以减少陌生人骚扰和垃圾广告。 2、保护用户隐私:控制好友请求能更好地保护用户的个人信息。 3、提升用户体验:避免用户…

用博达网站群管理平台设计网站时如何创建二级导航

1 介绍 现用博达网站群管理平台设计出的网站只能一级导航,亦即点击首页的顶端导航,直接出现列表页,无法出现二级菜单。二级菜单在网站开发中被称为二级导航。 怎样用博达网站群管理平台制作出二级导航的效果?这个问题在《网站群…

掌握电子邮件的艺术:使用 Mailbird 统一管理您的数字生活

在数字时代,电子邮件已成为我们沟通的骨干。无论是商务交流、家庭联络,还是订阅更新,我们几乎每天都在使用电子邮件。但随着账户数量的增加,管理这些账户变得日益复杂。如何有效地整合和优化您的电子邮件体验?Mailbird…

Arduino调试ESP32常见问题 exit status 1

问题1:代码上传(烧录)报Failed uploading: uploading error: exit status 1大概率原因:没有安装对应的驱动,我的ESP32驱动是CH340点击这里下载CH340 下载后打开,若出现乱码不用在意,点击第一个按…

原生js实现下滑到当前模块进度条填充

<div style"height: 1500px;"></div> <div class"progress-container"><div class"progress-bar" data-progress"90%"><p class"progress-text">Google Ads在Google搜索引擎上覆盖超过90%的互…

浙江大学蒋超实验室在JHM发文揭示日常使用量的一次性纸杯释放的微塑料或可能影响孕期健康

CQ师姐做的一个纸杯微塑料项目&#xff0c;非常有意思&#xff0c;揭示了日常生活中真实来源的孕期微塑料暴露&#xff0c;对生殖和代谢性能的影响和调控机制。我参与了其中的部分实验和分析&#xff0c;学习了养小鼠&#xff0c;灌胃&#xff0c;解剖和部分塑料的定性定量等实…