c# winform中如何添加自定义的控件方法

时间:2022-03-20 18:04:00
在c#的winfrom中有些控件没有我想要的事件,因此我想要自定义某些控件的事件,这样的话该如何用代码来实现呢?

例如,我想自定义一个button的click事件btn_definition,而不去用它默认的方法,这个该如何实现呢?
这个例子举的有点问题,不好意思,我也一时想不出有哪些好的例子,请高手把他理解成一类问题吧。

谢谢了。

16 个解决方案

#1


确实没理解,正在学习中,过一段时间可以回答这个问题。

#2


编写自己的事件。。。委托实现的。

#4


初始化界面的时候,加上这一句:

this.btn_definition+=new System.EventHandler(event_name);

试试看,event_name是你自己写的事件

#5


引用 4 楼 ginni215 的回复:
初始化界面的时候,加上这一句: 

this.btn_definition+=new System.EventHandler(event_name); 

试试看,event_name是你自己写的事件
.

#6


你随便在网上搜索以下C# event 的实现,很简单的!

#7


public event EventHandle Youreventname;


in your function

if(Youreventname!=null)
Youreventname(object,object);

#8


委托事件

#9


委托事件这个东西,不好理解啊,以前还用过一些

#10


不太明白你的意思

按你所描述的需求,如下代码就可以解决问题

public class MyButton : Button
{
    protected override void OnClick(EventArgs e)
        {
            //这里处理你自己的代码
            base.OnClick(e);
        }


}

#11


还有,你是没有办法去控制button的点击事件的,除非你用钩子。

就是说不用钩子的话,button的点击事件必然发生,但你可以在类里自己定义一个点击事件处理函数,这样也能达到你的目的,比如

public class MyButton : Button 

    public MyButton
   {
      this.Click +=new EventHandler(SelfClick);
   }
   private void SelfClick( object sender, EventArgs e)
   {

    }
}

#12


界面,在Button控件的OnClick里写自己的事件名称~~

后台。。
Button控件.Click += new System.EventHandler(事件名称);

#13


如果不是默认的事件。。。自己写委托写事件吧~~

#14


重写控件

#15


引用 12 楼 HDNGO 的回复:
界面,在Button控件的OnClick里写自己的事件名称~~

后台。。
C# codeButton控件.Click+=newSystem.EventHandler(事件名称);

委托

#16


新建用户控件继承你需要的那个最相近功能的控件,如果要添加事件,需要通过代理委托实现
如:
public event SelectionChangedEventHandler SelectionChanged; //选择事件
private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            if (SelectionChanged != null)
            {
                SelectionChangedEventArgs E = new SelectionChangedEventArgs(comboBox1.Text);
                SelectionChanged(this, E);
            }
剩下的就是在你需要的窗体中注册这个事件
你定义的控件.SelectionChanged += new SelectionChangedEventHandler(你定义的控件_SelectionChanged);
Good Luck!!!

#1


确实没理解,正在学习中,过一段时间可以回答这个问题。

#2


编写自己的事件。。。委托实现的。

#3


#4


初始化界面的时候,加上这一句:

this.btn_definition+=new System.EventHandler(event_name);

试试看,event_name是你自己写的事件

#5


引用 4 楼 ginni215 的回复:
初始化界面的时候,加上这一句: 

this.btn_definition+=new System.EventHandler(event_name); 

试试看,event_name是你自己写的事件
.

#6


你随便在网上搜索以下C# event 的实现,很简单的!

#7


public event EventHandle Youreventname;


in your function

if(Youreventname!=null)
Youreventname(object,object);

#8


委托事件

#9


委托事件这个东西,不好理解啊,以前还用过一些

#10


不太明白你的意思

按你所描述的需求,如下代码就可以解决问题

public class MyButton : Button
{
    protected override void OnClick(EventArgs e)
        {
            //这里处理你自己的代码
            base.OnClick(e);
        }


}

#11


还有,你是没有办法去控制button的点击事件的,除非你用钩子。

就是说不用钩子的话,button的点击事件必然发生,但你可以在类里自己定义一个点击事件处理函数,这样也能达到你的目的,比如

public class MyButton : Button 

    public MyButton
   {
      this.Click +=new EventHandler(SelfClick);
   }
   private void SelfClick( object sender, EventArgs e)
   {

    }
}

#12


界面,在Button控件的OnClick里写自己的事件名称~~

后台。。
Button控件.Click += new System.EventHandler(事件名称);

#13


如果不是默认的事件。。。自己写委托写事件吧~~

#14


重写控件

#15


引用 12 楼 HDNGO 的回复:
界面,在Button控件的OnClick里写自己的事件名称~~

后台。。
C# codeButton控件.Click+=newSystem.EventHandler(事件名称);

委托

#16


新建用户控件继承你需要的那个最相近功能的控件,如果要添加事件,需要通过代理委托实现
如:
public event SelectionChangedEventHandler SelectionChanged; //选择事件
private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            if (SelectionChanged != null)
            {
                SelectionChangedEventArgs E = new SelectionChangedEventArgs(comboBox1.Text);
                SelectionChanged(this, E);
            }
剩下的就是在你需要的窗体中注册这个事件
你定义的控件.SelectionChanged += new SelectionChangedEventHandler(你定义的控件_SelectionChanged);
Good Luck!!!