请教如何自定义控件的事件(C#)

时间:2022-08-31 07:40:39
我有动态生成的控件(CheckBox),可是我如何定义动态生成控件(CheckBox)的事件呢?

9 个解决方案

#1


可以更详细一些吗?

#2


我在datagrid帮定时自动添加了一列CheckBox,因为是自动生成CheckedBox,所以没有在程序的一开始定义CheckedChanged事件,所以我想在程序中实现事件的添加。看到过别人的程序用VB写的,在添加CheckBox是同时添加了CheckedChanged事件,代码如下:
AddHandler cb.CheckedChanged, AddressOf OnCheckedchangedEvent
这句话就是把cb(CheckBox)的CheckedChanged事件重新定义成OnCheckedchangedEvent,所以在后面的代码中定义了OnCheckedchangedEvent事件,代码如下:
Private Sub OnCheckedchangedEvent(ByVal sender As Object,ByVal e As EventArgs)
不知道我解释的对不对(我不太懂VB),所以我想在C#中如何实现上面的两段代码。

#3


cb.CheckedChanged += new System.EventHandler(OnCheckedchangedEvent);

#4


icyer()你好,你的这条语句我想到了,也使用了,可是我发现自己定义的OnCheckedChangedEvent和CheckBox自身的CheckedChanged不太一样,因为我跟踪了我的OnCheckedChangedEvent事件,发现就单选一个CheckBox时(选中时)它执行了OnCheckedChangedEvent事件,但你再次选这个CheckBox时(取消选取),它并没有执行OnCheckedChangedEvent事件。非常有意思的事是,当你选择第另外一个CheckBox时(选中),OnCheckedChangedEvent执行了,如果你取消该选择(两个中的任意一个),则OnCheckedChangedEvent执行了两遍,两遍?这是为什么呢?请各位给各理由先!

#5


icyer()在吗?能回答我的问题吗?

#6


定义:
Public Class YourCheckedBox:CheckedBox
{
   ......
   public Overrides  CheckStateChanged()
   {
   ......
   }
}
动态添加YourCheckedBox就行了。

#7


能说的详细些吗?sbf2000,就我现在这个情况谈谈,我应该怎么做呢?为什么有时候会执行两次OnCheckedChangedEvent,而有时候一次都不执行呢?

#8


AddHandler tempControl.Check, AddressOf tempControl_Check

tempcontrol为控件名,tempcontrol_Check是控件的事件。不明白继续问。

#9


你这个是VB的语句吧,C#呢?

#1


可以更详细一些吗?

#2


我在datagrid帮定时自动添加了一列CheckBox,因为是自动生成CheckedBox,所以没有在程序的一开始定义CheckedChanged事件,所以我想在程序中实现事件的添加。看到过别人的程序用VB写的,在添加CheckBox是同时添加了CheckedChanged事件,代码如下:
AddHandler cb.CheckedChanged, AddressOf OnCheckedchangedEvent
这句话就是把cb(CheckBox)的CheckedChanged事件重新定义成OnCheckedchangedEvent,所以在后面的代码中定义了OnCheckedchangedEvent事件,代码如下:
Private Sub OnCheckedchangedEvent(ByVal sender As Object,ByVal e As EventArgs)
不知道我解释的对不对(我不太懂VB),所以我想在C#中如何实现上面的两段代码。

#3


cb.CheckedChanged += new System.EventHandler(OnCheckedchangedEvent);

#4


icyer()你好,你的这条语句我想到了,也使用了,可是我发现自己定义的OnCheckedChangedEvent和CheckBox自身的CheckedChanged不太一样,因为我跟踪了我的OnCheckedChangedEvent事件,发现就单选一个CheckBox时(选中时)它执行了OnCheckedChangedEvent事件,但你再次选这个CheckBox时(取消选取),它并没有执行OnCheckedChangedEvent事件。非常有意思的事是,当你选择第另外一个CheckBox时(选中),OnCheckedChangedEvent执行了,如果你取消该选择(两个中的任意一个),则OnCheckedChangedEvent执行了两遍,两遍?这是为什么呢?请各位给各理由先!

#5


icyer()在吗?能回答我的问题吗?

#6


定义:
Public Class YourCheckedBox:CheckedBox
{
   ......
   public Overrides  CheckStateChanged()
   {
   ......
   }
}
动态添加YourCheckedBox就行了。

#7


能说的详细些吗?sbf2000,就我现在这个情况谈谈,我应该怎么做呢?为什么有时候会执行两次OnCheckedChangedEvent,而有时候一次都不执行呢?

#8


AddHandler tempControl.Check, AddressOf tempControl_Check

tempcontrol为控件名,tempcontrol_Check是控件的事件。不明白继续问。

#9


你这个是VB的语句吧,C#呢?