【问题标题】:C# Override an Event in Winforms [closed]C#覆盖Winforms中的事件[关闭]
【发布时间】:2017-04-27 21:20:56
【问题描述】:

我需要在 C# winforms 应用程序中为我的所有文本框添加一个事件。

我如何覆盖 Enter 事件,以便所有文本框默认都具有此事件? 提前致谢

【问题讨论】:

  • 你想要的自定义文本框,继承自 TextBox。你在那个班级有什么特别的活动吗?然后到处使用那个文本框
  • 从 TextBox 派生您自己的类。覆盖 OnEnter()。从工具箱顶部构建和删除它。
  • 您必须在 WinForms 中执行此操作吗,在 WPF 中使用 EventManager.RegisterClassHandler 执行此操作实际上并不难
  • 谢谢,我使用 Telerik winforms 的问题,但是当我进入 Designer.cs 时,我已经能够使用我的自定义文本框事件了。

标签: c# winforms events overriding


【解决方案1】:

您可以从TextBox 继承YourTextBox 并覆盖OnEnter 方法以提供所有此类文本框的默认行为。然后用这个控件代替默认的TextBox控件:

public class YourTextBox : TextBox
{
    protected override void OnEnter(EventArgs e)
    {
        // do something here
        base.OnEnter(e);
    }
}

或者您可以将所有文本框订阅到同一个事件处理程序。您可以手动或以编程方式执行此操作。例如。如果您只对 Form 的顶级文本框感兴趣:

foreach (var textBox in Controls.OfType<TextBox>())
     textBox.Enter += YourEventHandler;

【讨论】:

  • 嗨,谢尔盖,非常感谢你,我需要你为不同用途提供的两种解决方案:),这解决了我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多