none
如何使用复合控件中的子控件并能响应事件? RRS feed

  • 问题

  • 现有一个复合控件,包含label和button,

    在winform程序使用该复合控件时,如何使button按钮可以点击,并响应事件?

    2013年6月10日 4:07

答案

  • 复合控件都是一个整体,即便你把按钮拖拽上面,发布的时候已经不会响应按钮了。你可以考虑:

    1)打开复合控件代码区域,并为需要的按钮新创建事件。

    2)切换到复合控件设计界面,分别双击需要事件的按钮,写下类似的代码:

    public event EventHandler 自定义事件名称 = null;
    
    private void Button1_Click(……)
    {
       if(自定义事件名称!=null)
       {
          自定义事件名称(sender,e);
       }
    }

    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    • 已标记为答案 tingrun 2013年6月10日 7:33
    2013年6月10日 5:02
    版主

全部回复

  • 复合控件都是一个整体,即便你把按钮拖拽上面,发布的时候已经不会响应按钮了。你可以考虑:

    1)打开复合控件代码区域,并为需要的按钮新创建事件。

    2)切换到复合控件设计界面,分别双击需要事件的按钮,写下类似的代码:

    public event EventHandler 自定义事件名称 = null;
    
    private void Button1_Click(……)
    {
       if(自定义事件名称!=null)
       {
          自定义事件名称(sender,e);
       }
    }

    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    • 已标记为答案 tingrun 2013年6月10日 7:33
    2013年6月10日 5:02
    版主
  • 1、你应该为该控件添加一个设计器,使用特性语句[Designer(typeof(复合控件设计器 ))]在该复合控件类的头。

    2、写button1、button2的响应事件

    2、设计该“复合控件设计器”类:让其继承于ControlDesigner,或者ParentControlDesigner。在该类中override 事件GetHitTest

    这样,在设计时就可以响应鼠的点击事件了。

    2013年6月17日 9:18