winform 中调用用户控件中 嵌套用户控件的事件

工作了很久,一直没有很深入的了解C#中的委托和事件。

来到新公司,主要的工作就是使用委托和事件操作数据。一下子不知道该如何下手。各方请教大神,得出下面的方法

1. 在A控件中定义一个事件,B控件触发的时候,调用一下这个事件。然后再在A的父级控件中写方法,+=的方式把方法委托给A的事件就行了

窗体:

private void Form1_Load(object sender, EventArgs e)
        {
            UC_Content content = new UC_Content();
            content.C_Clicked += new Action(content_C_Clicked);
            content.Margin = new Padding(40);
            this.groupBox1.Controls.Add(content);
        }

void content_C_Clicked()
        {
            MessageBox.Show("C点击了");
        }

大控件
  private void UC_Content_Load(object sender, EventArgs e)
        {
            UC_Detail detail = new UC_Detail();
            detail.Margin = new Padding(30);
            detail.Click += new EventHandler(detail_Click);
            this.panel1.Controls.Add(detail);
        }

void detail_Click(object sender, EventArgs e)
        {
            if(C_Clicked!=null)
            {
                C_Clicked();
            }
        }

public event Action C_Clicked;

时间: 2024-10-09 16:39:19

winform 中调用用户控件中 嵌套用户控件的事件的相关文章

bug日记之---------js中调用另一个js中的有ajax的方法, 返回值为undefind

今天做一个OCR授权的需求, 需要开发一个OCR弹框, 让用户选择是否授权给第三方识别公司(旷世科技)保存和识别用户个人信息, 照片等. 其中用到了在一个js的方法中调用另外一个js的方法, 其中有一点特别的是另外一个js的方法中会进行一个ajax, 会根据ajax返回的结果来进行返回true或者false. 在测试的过程中我发现不管怎么弄, 最后返回的都是undefind. 下面来模拟一下这个场景 上面这个例子中,flag一直都是undefind,ajax已经是同步的情况下依旧返回undefi

控件内嵌套用户控件

可以建一个用户控件,然后在里面拖1个listbox,1个combobox,1个numericupdown控件.编译一下,打开form,就可以看到在vs上面这个用户控件了,直接拖动它到这个form即可. 步骤:1.拖动一个panel或者一个groupbox,然后把AutoScroll属性置为true.2.在form的load事件写下列代码: private void Form1_Load(object sender, EventArgs e) { UserControl1 userControl1

Repeater控件三层嵌套-内层Repeater添加绑定事件

用Repeater三层嵌套,最外层Repeater可以生成自己的ItemCommand事件.但接下来中间层因为是嵌套了的,所以无法在属性窗口中生成自己的事件.如果手动敲入则无效. 解决办法是需要通过编码的方式来添加事件. protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { //假设在第一层里面嵌套了一个名叫Repeater2 的 var temp = e.Item.FindControl

CI框架中一个类中调用另一个类中已经加载对象测试

controller.php 1 <?php 2 class CI_Controller { 3 4 private static $instance; 5 6 public function __construct() 7 { 8 self::$instance =& $this; 9 10 foreach (is_loaded() as $var => $class) 11 { 12 $this->$var =& load_class($class); 13 $obj

VBA 练习-从两个库中调用数据到活动表中

练习VBA Sub 入库() Dim basedb As String, cpdb As String, wb As Workbook, ws As Worksheet, curWs As Worksheet basedb = ThisWorkbook.Path & "\分析数据.xlsx" cpdb = ThisWorkbook.Path & "\成品抽检信息.xlsx" '分析数据库中提取 If Len(Dir(basedb)) = 0 Then

WinForm中调用WPF控件

WinForm中调用WPF控件 在WinForm中可以使用WPF中的控件,或者由WPF创建的自定义控件: 步骤1:创建WinForm工程: 步骤2:在WinForm工程的解决方案资源管理器中,在刚刚创建的WinForm解决方案中新建或者添加现有的WPF用户控件工程: 步骤3:在WPF中创建自定义的控件,或者添加WPF控件到面板上: 步骤4:在WinForm面板上添加ElementHost控件(工具箱中): 步骤5:生成解决方案: 步骤6:在刚刚的ElementHost中的Child属性中添加刚刚

web页面动态加载UserControl,并调用用户控件中的方法来初始化控件

1,HTML页 头部注册: <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/CeShiBu.ascx" TagPrefix="UserControl" TagName="CeShiBu"%> <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/KaiFaBu.ascx" TagPrefix=&quo

在WPF中调用Winform控件

最近在项目中用到了人脸识别和指纹识别,需要调用外部设备和接口,这里就用到了在WPF中调用Winform控件. 第一步,添加程序集引用.System.Windows.Forms和WindowsFormsIntegration 第二步,添加对Winform控件的引用(选中部分) 第三步,添加控件(包在WindowsFormsHost中)

使用CefSharp 在C#用户控件中嵌入Chrome浏览器使用方法

CEF(Chromium Embedded Framework, 嵌入式Chromium框架)是C/C++开发的库 目前 Google Chrome(Google浏览器),Chromium浏览器,Opera等都是基于CEF为核心,Webkit引擎的浏览器. Xilium.CefGlue是对CEF项目的.net的包装,它是用P/Invoke的方式来调用CEF类库.CEFSharp是用C++/CLI的方式来调用CEF类库的. 原先使用的是Xilium.CefGlue,如果只是单纯在窗口上实现的话是没