【问题标题】:Create My Own Control [closed]创建我自己的控件[关闭]
【发布时间】:2018-10-22 06:08:53
【问题描述】:

我想创建自己的文本框控件,当我在其上单击鼠标右键时会出现事件。我该怎么做?

【问题讨论】:

  • 互联网上的任何教程都可以帮助您入门。
  • 找不到,能不能给个链接?
  • 您使用了哪些搜索词?
  • 例如:如何创建自己的控件并为其添加事件?
  • 我将创建一个类,例如从 textBox 类继承,我想在其中添加我自己的事件,那么,我将在 Visual Studio 工具箱中添加它

标签: c# visual-studio controls


【解决方案1】:

这很简单,困难的部分在于如何引发事件:

public class MyMagicTextbox : TextBox
{
    public event EventHandler<EventArgs> MyMagicEvent;

    protected virtual void OnMyMagicEvent(EventArgs e)
    {
        MyMagicEvent?.Invoke(this, e);
    }
}

继承一个文本框(或其他控件)并为其赋予新的方法/事件真的就这么简单。您必须决定引发该事件的逻辑以及消费应用程序如何使用它。


从 cmets 编辑:

例如,我想创建一个文本框并定义一个在单击鼠标右键时出现的事件..

然后您必须消耗(使用 OnXXX 事件名称)鼠标单击,然后引发您的自定义事件:

public class MyMagicTextbox : TextBox
{
    public event EventHandler<EventArgs> MyMagicEvent;

    protected virtual void OnMyMagicEvent(EventArgs e)
    {
        MyMagicEvent?.Invoke(this, e);
    }

    protected override void OnMouseClick(MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
            OnMyMagicEvent(EventArgs.Empty);

        base.OnMouseClick(e);
    }
}

【讨论】:

  • 我对困难的部分感兴趣,而不是事件的声明......
  • @Beginner 鉴于您在问题中提供的信息,我无法再告诉您有关“困难部分”的更多信息。什么触发事件?它应该做什么?事件参数是什么?消费者将如何使用它?对于这种答案,您的问题有很多漏洞。
  • 我要补充一点,在使用 Visual Studio 时,您可以通过右键单击项目(或文件夹)add --&gt; new 并选择custom control 来创建自定义控件。然后你得到一个继承Control的控件,你只需要改变它来继承你真正想要继承的任何控件。
  • @ZoharPeled 我不建议这样做来继承 TextBox,您不需要 .Designer 文件,并且在将其更改为从 TextBox 继承时会破坏设计器,因此在解决方案资源管理器中双击无需从设计器文件中手动编辑错误就会出现错误。
  • 例如,我想创建一个文本框并定义一个事件,当鼠标右键单击它时会出现...
猜你喜欢
  • 1970-01-01
  • 2014-09-03
  • 2012-01-13
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多