我想自制一个button按钮,就新建了一个用户控件,在用户控件界面上我放了个button上去,然后把用户控件的大小调成和button大小一样,也就是重合了,并把button的Dock设置为Fill。制作好后,我拖了一个自制的button在界面上,并给用户控件的Click加入了点击后要执行的命令。但是我发现点击之后没有反应,设置断点也跳不进去,我想是不是应该给用户控件上面的button添加点击事件,求高人解答~

解决方案 »

  1.   

    你在页面上加一个控件Label,事件里面Label.Text="aaaaaa";
    点击事件后Label有没有变化,不就知道了吗?
      

  2.   

    加入我在form1拖了一个myButton控件,那么在form1的代码里写myButton上button的Click事件,本人对这方面不太了解,能否给个语句,谢谢~
      

  3.   

    假如我在form1拖了一个myButton控件,那么在form1的代码里写myButton上button的Click事件,本人对这方面不太了解,能否给个语句,谢谢~ 
      

  4.   

    你把Button.Dock设为Fill了,那就应该把click事件挂勾到Button上。
      

  5.   

    class MyControl : Control
    {
        //可能这个方法在mycontrol.designer.cs里面
        public MyControl()
        {
            ...
            button1.Click += new EventHandler(button1_Click);
        }
        
        private EventHandler buttonClick;
        public event EventHandler ButtonClick
        {
            add { buttonClick += value; } remove { buttonClick -= value; }
        }    private void button1_Click(object sender, EventArgs e)
        {
            if (ButtonClick != null) ButtonClick(this, new EventArgs());
        }
    }
      

  6.   

    另外,如果你想自制一个按钮,完全可以直接从Button而不是Control继承。
      

  7.   

    版主可否说下直接继承button的自制控件怎么弄?
      

  8.   

    版主可否说下直接继承button的自制控件怎么弄?看你要扩展什么功能的。最简单的:
    class MyButton : Button { }
    编译,即可。不过这个代码产生的MyButton和Button一模一样。
      

  9.   


        public partial class MyButton : UserControl
        {
            //new 关键字隐藏继承的成员 
            public new event EventHandler Click;
            public MyButton()
            {
                InitializeComponent();            button1.Click += new EventHandler(button1_Click);
            }        void button1_Click(object sender, EventArgs e)
            {         
                if(Click!=null)
                    Click(this,e);
            }
        }这样你就放心和以往那样调用了 不需要改调用方的代码
      

  10.   

    版主可否说下直接继承button的自制控件怎么弄?看你要扩展什么功能的。最简单的:
    class MyButton : Button { }
    编译,即可。不过这个代码产生的MyButton和Button一模一样。
    我想扩展的功能是button上的字体随button的大小而改变,如果在这个类里加个size_changed的事件,应该怎么写?
      

  11.   

    你好,我用这个代码,它走了两遍button1_Click,这是为什么?
      

  12.   

    版主可否说下直接继承button的自制控件怎么弄?看你要扩展什么功能的。最简单的:
    class MyButton : Button { }
    编译,即可。不过这个代码产生的MyButton和Button一模一样。
    版主,如果我要在MyButton这个类里写一个当button的size改变时button上的字体大小根据一定的规则进行改变,能否给下比较核心的代码?谢谢~
      

  13.   

    class MyButton : Button
    {
        protected void override OnResize(EventArgs e)
        {
            Font = ...;
        }
    }
      

  14.   

    我把button1.Click += new EventHandler(button1_Click);去了正常了,谢谢~
      

  15.   

    http://www.google.com.hk/url?sa=t&rct=j&q=.net%20winform%20%E4%BA%8B%E4%BB%B6%E8%B7%AF%E7%94%B1&source=web&cd=4&cad=rja&ved=0CDsQFjAD&url=%68%74%74%70%3a%2f%2f%66%69%6c%65%73%2e%63%6e%62%6c%6f%67%73%2e%63%6f%6d%2f%68%65%6c%6c%6f%6a%32%65%65%2f%25%45%38%25%42%37%25%41%46%25%45%37%25%39%34%25%42%31%25%45%34%25%42%41%25%38%42%25%45%34%25%42%42%25%42%36%25%45%37%25%39%41%25%38%34%25%45%36%25%42%43%25%39%34%25%45%35%25%38%46%25%39%38%2e%70%64%66&ei=40UnUoHHCK66iAf09oHQCg&usg=AFQjCNEw9tRUcIwFi4binwiV3mIB_zKN4Q&bvm=bv.51495398,d.aGc
      

  16.   

    使用google随便搜了一下,在第3个答案中就看到了这个。我觉得稍微系统一点地去研究一个问题(用半天时间或者10天时间,但是不会太纠结),搞懂一些常见的原理性的模式,总比随便瞎猜内部机制或者死记硬背雷人的什么模式要强。
      

  17.   

    在BUTTON的click事件处理程序中去触发你的用户控件事件
      

  18.   

    这是对对象的不理解,当你用UserControl把button给封装起来后,很明显当你在用UserControl时候,点击的对象也是UserControl,而不是button,所以无法出发button,如果你想要触发button的事件,第一个可以直接用UserControl的事件,如click;第二个需要把button的事件在UserControl中再次封装提供事件,这样在UserControl中可以调用
      

  19.   

    。。你可以建个试试,先创建个用户控件,上面放个button,然后把用户控件的大小调成和button一样的,然后运行,点击那个用户控件,你看看是先走用户控件的Click还是先走button的Click,反正我的是先走的button的..
      

  20.   

    有些事件不想在每个系统自带的button上都写一遍,所以把相关方法封装成一个自制button,之后代码就会少写很多了。