想向大家请教一个问题:C#中的事件处理机制是怎样的?(在线等候)

leon0332 2003-10-15 08:06:24
我用VS.net创建了一个标准的windows窗口程序,加入两个自定义控件:MyRichTextBox和MyTextBox
主要代码如下:(代码有些长,但结构很简单,希望大家能耐心看完)

public class MyRichTextBox : System.Windows.Forms.RichTextBox
{
public event EventHandler MyDoubleClick;

protected override void OnDoubleClick(EventArgs e)
{
if(MyDoubleClick != null)
{
MyDoubleClick(this, e);
}
}
}

public class MyTextBox : System.Windows.Forms.TextBox
{
public event EventHandler MyDoubleClick;

protected override void OnDoubleClick(EventArgs e)
{
if(MyDoubleClick != null)
{
MyDoubleClick(this, e);
}
}
}

public class MainForm : System.Windows.Forms.Form
{
private MyRichTextBox myRichTextBox;
private MyTextBox myTextBox;
...
private void InitializeComponent()
{
...
myRichTextBox.MyDoubleClick +=
new EventHandlerMyControl_MyDoubleClick);
myTextBox.MyDoubleClick +=
new EventHandler(MyControl_MyDoubleClick);
...
}
...
private void MyControl_MyDoubleClick(object sender, EventArgs e)
{
this.Text = "MyDoubleClick";
}
}

结果发现两个问题:
1.自定义的myTextBox可以执行DoubleClick事件,但myRichTextBox却不行。
2.将OnDoubleClick方法的修饰符override改为new,这时myTextBox也无法响应DoubleClick事件了。
想请大家帮我分析一下上面的问题,也想和大家探讨一下C#中事件的处理过程。
...全文
69 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2003-10-16
  • 打赏
  • 举报
回复
RichTextBox handles the double click event by itself, see a solution here:

http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&selm=aSnUmd%23oBHA.456%40cpmsftngxa09
leon0332 2003-10-15
  • 打赏
  • 举报
回复
我加入了这句好象结果也是一样,
另外我该如何使RichTextBox可以响应DoubleClick事件呢?
xixigongzhu 2003-10-15
  • 打赏
  • 举报
回复
protected override void OnDoubleClick(EventArgs e)
{
base.OnDoubleClick(e);
if(MyDoubleClick != null)
{
MyDoubleClick(this, e);
}
}

另,在RichTextBox可能屏蔽了这个事件。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧