【问题标题】:How to raise MouseClick event?如何引发 MouseClick 事件?
【发布时间】:2011-03-23 19:30:58
【问题描述】:

你好 我读过事件可以像方法一样引发。好吧,它适用于我的自定义事件(我创建了一个委托、事件,我可以通过调用它来引发事件)。 但是我无法手动引发 MouseClick 等事件,它一直说它必须出现在 += 运算符的左侧。有什么问题?

【问题讨论】:

  • 没有可发布的代码。请尝试手动引发 this.MouseClick 事件。

标签: c# events


【解决方案1】:

虽然我确信你会得到比这个答案更丰富的其他答案,但基本上你不能在包含它的类之外“引发”一个事件。 MSDN有this to say关于事件

事件是一种特殊的多播 只能被调用的委托 在他们所在的类或结构中 被声明(发布者类)。如果 其他订阅的类或结构 事件,它们的事件处理方法 发布者时会调用 类引发事件。

如果您想从字面上为 Windows 窗体控件 MouseClick 引发事件,则必须创建该控件的子类并调用 base.OnMouseClick() 或覆盖它。

【讨论】:

  • 天哪,我认为这就是原因:D 谢谢!
【解决方案2】:

如果这是一个按钮,您可以使用PerformClick 方法以编程方式单击它。

遗憾的是,这仅适用于按钮,不适用于其他类型的 Controls... 除了 MenuItem

【讨论】:

    【解决方案3】:

    如果你想点击按钮,你应该调用:

    button1.PerformClick();
    

    如果你想调用MouseClick请参考forum,c#中使用windows api有解决方案:

    【讨论】:

      【解决方案4】:
      private void button1_Click(object sender, EventArgs e)
      {
          //Enter your code here
      }
      
      void Page_Load(object sender, EventArgs e){
          this.button1.Click += new System.EventHandler(this.button1_Click);
      
          this.button1_Click(this, e);
      }
      

      【讨论】:

        【解决方案5】:

        假设您要手动引发“点击”事件。这对我有用:

        public partial class CustomButton : UserControl
        {
            public new event EventHandler Click;
        
            private void lblText_Click(object sender, EventArgs e)
            {
                Click(this, e);
            }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-29
          • 1970-01-01
          • 1970-01-01
          • 2010-12-31
          • 1970-01-01
          相关资源
          最近更新 更多