2012-02-06 110 views
0

我有一個在3.5框架中開發的winform應用程序。間歇地,應用程序中的按鈕不響應。應用程序從不在標題中顯示「不響應」,但它只是按鈕。即使我在按鈕點擊代碼中放置了一個斷點,當按鈕被點擊時,控件也不會到達那裏!Winform應用程序按鈕變得無響應

可能是什麼原因?

+2

您正在更新表單中的數據還是等待數據庫響應?你能告訴我們一些代碼來重現這個問題嗎?謝謝。 – Jonathan 2012-02-06 09:09:18

回答

0

可能原因是你正在UI線程(訪問數據庫,連接到互聯網,閱讀文件等)做一些事情,所以它很忙。

這裏是解決方案:

  • 從來沒有在你的代碼隱藏文件的業務邏輯(比如,從來沒有在你的Button_Click方法的OnLoad方法等)。
  • 使用MVC/MVP模式將您的業務邏輯與用戶界面分開。
  • 始終以異步方式執行業務邏輯(工作線程,任務等),當您分離業務邏輯時,這並不重要。
+1

- 代碼背後,MVC/MVP模式,這是一個WinForm問題。 – 2012-02-07 04:18:47

+2

@Jeremy Thompson:Ofcourse MVC,MVP也可以在Winforms中使用,雖然沒有很好開發,也沒有找到singelton文檔,但推薦使用。粗俗的語言,你可以分開你的業務邏輯和應用程序邏輯。 請參閱: 1. http://stackoverflow.com/questions/654722/implementing-mvc-with-windows-forms 2. http://social.msdn.microsoft.com/Forums/en-NZ/architecturegeneral/thread/904d4399-5ba6-4eee-b76f-6055a2dcb8e0 – Marshal 2012-02-07 04:35:20

+1

@JeremyThompson噢,爲什麼ppl認爲「代碼背後」,「MVC」,「MVP」是網絡條款?僅僅因爲ASP.NET MVC?!來吧,請認真對待。 MVC/MVP是在任何地方都可以使用的設計模式,甚至在ASP.NET MVC發明之前就已經使用了:)它們是用來將BL與UI分開的模式,它們完全不可知,無論它是Web還是WinForms,甚至是控制檯。這就是這個想法:你的視圖可以是任何東西。 MS P&P部門用於支持在此框架中推薦並使用MVP的複合應用程序塊... – 2012-02-07 09:54:24

0

在修復您的接受率之前,最可能的答案是Button Click事件丟失了Handles子句。在Vb.Net它很容易看到手柄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);