Winformアプリケーションのボタンが応答しなくなる

3.5フレームワークで開発されたwinformアプリケーションがあります。断続的に、アプリケーションのボタンが応答しなくなります。アプリケーションはタイトルに「応答していません」と表示されることはありませんが、それは単なるボタンです。ボタンのクリックコードにブレークポイントを入れても、ボタンをクリックしたときにコントロールがそこに来ることはありません!!!

理由は何でしょうか?

0
彼の形式でデータを更新しているのか、データベースの応答を待っていますか?問題を再現するためのコードをいくつか教えてください。ありがとう。
追加された 著者 Jonathan,

2 答え

受け入れ率を修正するまでは、ボタンクリックイベントが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);
0
追加された

おそらく、UIスレッド(データベースへのアクセス、インターネットへの接続、ファイルの読み取りなど)で何かをしているため、ビジー状態になっている可能性があります。

ここに解決策があります:

  • コードビハインドファイルにビジネスロジックを持たないでください(Button_Clickメソッド、OnLoadメソッドなどで使用することはできません)。
  • MVC/MVPパターンを使用して、ビジネスロジックとUIを分離します。
  • ビジネスロジックを常に非同期的に(ワーカースレッド、タスクなど)実行します。ビジネスロジックを分離しておくのは簡単です。
0
追加された
MVC/MVPパターンのコードビハインド、これはWinFormの質問です。
追加された 著者 Jeremy Thompson,
@AlexeyRaga - 私はMVCとMVPの背後にあるコンセプトを完全によく知っていますが、MVC3やWebFormsMVP.comなどのWeb-dev用に開発されたWinForm MVC/MVPフレームワークはありません。 UIとDALからBLを分離するパターンはたくさんあります。 Marshalが指摘しているSOリンクでさえ、WinformsでMVCをどのように使いこなしているのかを示しています。同意しないと同意する。コードビハインドでは、Web用語です。 aspx <%%>と.csにコードを書くことはできますが、WinFormsのコードと同等のものはありません。ビジネスロジックを非同期的に実行する方がよい場合もあります。たとえば、フィールドの検証
追加された 著者 Jeremy Thompson,
meh - これはボタンイベントハンドラがないことについての質問を追跡しています。続行する必要はありません。Alexeyはおそらく私の周りを暮らしています - 私たちはそれについてビールでチャットします!
追加された 著者 Jeremy Thompson,
@Jeremy Thompson:Ofcourse MVC、MVPもWinformsで可能ですが、かなり開発されておらず、シネルトンのドキュメントも見つかりませんでした。原語では、ビジネスロジックとアプリケーションロジックを分離することができます。親切に言って:1. stackoverflow.com/questions/654722/ &hellip; 2. social.msdn.microsoft.com/Forums/en-NZ/architecturegeneral/…
追加された 著者 Marshal,
JeremyはAlexyの単純な意味を理解できませんでしたが、「ビジネスロジックには非同期的にアクセスしない」という意味があります。非同期データベース操作は、多くのバグのスコープを作成します。慎重にしなければならない
追加された 著者 nawfal,
@JeremyThompsonああ、なぜpplは "コードの背後にある"、 "MVC"、 "MVP"はWeb用語であると思いますか?ちょうどASP.NET MVCのために!みんな、真剣にやりなさい。 MVC/MVPは、どこでも使用され、ASP.NET MVCが発明される前から使用されていたデザインパターンです。これらは、BLからUIを分離するために使用するパターンであり、Webでもwinformsでもコンソールでも全く無関心です。それはアイデアです:あなたのビューは何でもかまいません。 MS P&P部門は、このフレームワークでMVPを推奨し、使用していた複合アプリケーションブロックをサポートしていました...
追加された 著者 Alexey Raga,