Winform应用程序按钮变为无响应

本文关键字:响应 应用程序 按钮 Winform | 更新日期: 2023-09-27 18:22:31

我有一个在3.5框架中开发的winform应用程序。应用程序中的按钮会间歇性地失去响应。应用程序从未在标题中显示"未响应",但它只是按钮。即使我在按钮点击代码中设置了一个断点,当按钮被点击时,控件也永远不会出现!!!

原因可能是什么?

Winform应用程序按钮变为无响应

可能是因为你正在UI线程中做一些事情(访问数据库、连接到互联网、读取文件等),所以它很忙。

以下是解决方案:

  • 永远不要在代码隐藏文件中包含业务逻辑(例如,永远不要在Button_Click方法、OnLoad方法等中包含它)
  • 使用MVC/MVP模式将业务逻辑与UI分离
  • 始终异步执行业务逻辑(工作线程、任务等),当您的业务逻辑分离时,这是微不足道的

在修复接受率之前,最有可能的答案是Button Click事件丢失了Handles子句。在Vb.Net中,很容易看到Handles-xyz事件:

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click

在c#中,您必须深入窗体的构造函数中的InitializeComponent(F12)调用。然后检查您点击的按钮是否分配了事件:

this.Button1.Click += new System.EventHandler(this.Button1_Click);