【问题标题】:Disable event of Inherited UserControlInherited UserControl 的禁用事件
【发布时间】:2012-02-19 15:57:25
【问题描述】:

(大家好)

我创建了一个从 tabcontrol 继承的新用户控件,并覆盖了一些事件。

当我从一个标签页切换到另一个标签页时,会依次触发以下事件:

1) OnDeselecting(TabControlCancelEventArgs e) 2) OnMouseDown(MouseEventArgs e) 3) OnMouseClick(MouseEventArgs e) 4) OnMouseUp(鼠标事件参数 e)

当 1) 被触发时,我如何暂时禁用 2) 和 3)?

您的帮助将不胜感激!

PS:

我确实需要所有这些事件,目前我正在使用一个布尔变量来完成这项肮脏的工作。

.net 3.5+ VS2008+ Win7 64位

【问题讨论】:

  • 为什么需要这个?看起来解决问题的方法不对
  • 我想通过点击标签上的自定义区域来关闭标签页。如果我关闭其他标签页,则不会失去对当前访问的标签页的关注。
  • 布尔变量是规范的解决方案,没问题。请记住,OnDeselecting 不仅会通过鼠标单击触发,请确保在使用左/右箭头和 Ctrl+Tab 时它仍然可以正常工作。
  • 谢谢,sll、Hans Passant 和 Steve,我会坚持使用 bool 解决方案一段时间。
  • 致:Hans Passant,谢谢,我将禁用这些功能键,这是链接,希望它对其他人也有帮助。 social.msdn.microsoft.com/Forums/zh/winforms/thread/…

标签: c# events


【解决方案1】:

在你的 OnDeselecting 事件中试试这个

try
{
    tab.MouseDown -= new MouseEventHandler(this.YourMouseDownEvent);
    tab.MouseClick -= new MouseEventHandler(this.YourMouseClickEvent);
    ..... // your code here.....
}
finally
{
    tab.MouseDown += new MouseEventHandler(this.YourMouseDownEvent);
    tab.MouseClick += new MouseEventHandler(this.YourMouseClickEvent);
}

【讨论】:

  • 嗨,史蒂夫,我试试你的代码,事件没有被禁用。所以我还是会使用我原来的方法。谢谢你的回复。
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多