C# 如何在代码中触发单击事件

C# 如何在代码中触发单击事件,c#,winforms,C#,Winforms,很久以前,我有一个由一些开发人员用c语言开发的应用程序,现在我们开始提供维护 当我浏览代码时,我可以看到一个单击事件“private void\u menuNewView\u click(object sender,EventArgs e)”,当我从UI(一个奇怪的beaviour)设置断点并启动操作时,该事件不会触发 当我打开设计视图时,我打开上下文菜单条并单击菜单“newview”它正在触发代码隐藏单击事件“private void”\u menuNewView\u click(object

很久以前,我有一个由一些开发人员用c语言开发的应用程序,现在我们开始提供维护

当我浏览代码时,我可以看到一个单击事件“
private void\u menuNewView\u click(object sender,EventArgs e)
”,当我从UI(一个奇怪的beaviour)设置断点并启动操作时,该事件不会触发

当我打开设计视图时,我打开上下文菜单条并单击
菜单“newview”
它正在触发代码隐藏单击事件“
private void”\u menuNewView\u click(object sender,EventArgs e)”

但从UI开始,我启动了应用程序,并在代码中的
单击事件
中放置断点,并执行了操作newview,但它没有触发,这里有人能帮我吗,newview操作目前还没有完成

这是点击事件的参考之一,您可以通过两种方式触发它:

  • 通过订阅按钮的单击事件:

    this.button1.Click += new EventHandler(button1_Click);
    //there you have an event:
    private void button1_Click(object sender, EventArgs e)
    {
       //code inside event...
    }
    
  • 或使用实际代码:

    button1_Click(new object(), new EventArgs());
    

  • 我来这里是为了帮助触发toolstripitem上的Click事件,我已经手动为它创建了一个事件,所以我没有直接调用的方法。但事实证明tsi有一个名为

    PerfomClick() 
    
    触发点击事件;我不想寻找一种方法,所以我想在这里分享一下,希望能帮助其他处于同样情况的人

    如果有帮助,我的代码如下所示:

    在上下文菜单中的第二个toolstrip项上单击“执行”

     ContextMenuStrip.Items[1].PerformClick();
    
    然后事件就发生了

     tsmi.Click += (s, e) =>
     {
          BackUpVSSolution(@"C:\temp\");
     };
    
    它就像一个符咒

    我想我也应该加上这个。 如果您只想开始任何与文件类型相关的过程,您可以将其更改为

     tsmi.Click += (s, e) =>
     {
         Process.Start("C:\temp\temptext.txt");
     };
    

    这将打开默认的文本编辑器程序。

    如果创建Click\u事件后按钮控件名称发生更改,则会出现此问题。 所以我认为,复制您的代码并从代码视图中删除事件,运行您的解决方案,肯定会发生错误,单击错误,这将引导您找到设计器生成的代码。删除/注释该部分(单击事件名称的单行)。重新生成代码并创建新的单击事件,然后粘贴复制的代码。 这很好,如果你已经找到了任何解决方案。
    希望这能帮助其他有同样困难的人

    尝试查找事件处理程序上的所有引用。它引用在哪里?那是唯一的引用?如果您在此处放置断点,它是否会运行?请确保没有在任何其他位置注销单击事件(-=)或重新构建_menuNew,
    menuNew.click+=
    行在何处执行?您好,很抱歉占用您宝贵的时间,同样的点击事件被用于其他一些控制中,这是负责的一个,我把断点放在那里,现在一切都好了,谢谢你提供的信息,但错误来自我这边,相同的点击事件定义在两个不同的页面中,我选错了一个:D我实际上犯了同样的错误,你的评论帮助我谢谢你!