【问题标题】:How to fire click event of panel programmatically?如何以编程方式触发面板的点击事件?
【发布时间】:2016-06-12 08:02:42
【问题描述】:

我在 vs2010 中有一个 winforms 应用程序和一个我想以编程方式触发其点击事件的面板。我该怎么做呢? Button 有一个 PerformClick,但我在 Panel 中找不到相同的。

【问题讨论】:

  • 您的面板的 Click 事件将附加到一个函数,是吗?然后,调用这个函数,不要费心执行点击……它会得到相同的结果。
  • 拨打Panel_Click(null,null)
  • @Gusman 这将成为我首选(和赞成)的解决方案,而不是像链接答案之一中所建议的那样创建自己的 Button 类并覆盖点击处理程序。我可以建议将其作为答案吗?
  • 我建议不要null 传递给事件处理程序。这将导致依赖于那些非空参数的事件处理程序内部完全合理的代码失败。至少,选择一个合理的发送对象并将EventArgs.Empty作为第二个参数传递。

标签: c# winforms


【解决方案1】:

您的面板的 Click 事件将附加到事件处理程序,对吗?

然后只需从按钮的单击事件处理程序中调用该事件处理程序:

public void Panel1_Click(object sender, EventArgs e)
{
    //Do whatever you need to do
}

public void Button1_Click(object sender, EventArgs e)
{
    //Do anything you need to do first
    Panel1_Click(Panel1, EventArgs.Empty);
}

效果和点击面板一样。

【讨论】:

  • 如果附加的函数不是本地函数怎么办?
  • @DCOPTimDowd 调用那个函数,它在哪里并不重要。
  • 如何调用当前范围内无权访问的函数?
  • 如果您无权访问它,您是如何将其附加到按钮的事件中的?
  • 我在问为什么函数在哪里调用它并不重要,正如你所说的那样。我很好奇,因为我不知道有什么方法可以做到这一点。
猜你喜欢
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 2019-01-22
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多