2012-02-15 12 views
0

私は複数のフォームを持つプロジェクトを持っています。プロジェクトデータセットを変更した後、フォームが正しく表示されても、あるフォームのLoadイベントが機能しなくなりました。フォーム自体に変更はありませんでした。簡単な回避策として、(VS IDEを介して)表示されたハンドラを作成してそこにコードを入れましたが、どちらも起動しません(デバッガに問題がないことを確認するためのテストメッセージボックスを作成しました)。その一方で、多くのイベントが有効です。私はActivatedを試してみましたが動作しますが、それは私にとって有用ではありません。一部のフォームイベント(読み込み、表示)が動作しなくなった

.Designer.csの該当する行があります:私は私が作ったバックアップと、このフォーム(.csファイル、resxファイル、.Designer.cs)に接続された3つのファイルを比較しました

this.Load += new System.EventHandler(this.FormZlecenie_Load); 

は、データセットを変更する前に、実質的に違いはありません(問題なくバックアップが行われます)。

私はデータセットにこれらの変更が必要なので、バックアップに戻したくありません。

バイナリフォルダ(bin、obj)もすべて削除しましたが、成功しませんでした。

私はネット上で同様の問題を探しましたが、唯一の解決策はフォームを再作成することでした。これは私にとって最後の手段です。時間がかかりすぎるので、あまり簡単に諦めたくないからです。

他にはどこが見えますか?私はアイデアがありません。

+0

64ビット版のWindowsを使用していますか?出力ウィンドウに「最初の例外」が表示されますか? –

+0

はい、それは64ビットWindows 7です。私のプロジェクトはNet 2.0の下にあり、「最初のチャンスの例外」はNet 4.0のものです。しかし、Net 4.0の下で再コンパイルしたので、このメッセージは出力ウィンドウに表示されません。 – killgore

+1

[VS2010は64ビットWinFormsアプリケーションで未処理の例外メッセージを表示しません](http://stackoverflow.com/questions/4933958/vs2010-does-not-show-united-exception-message-in-a -64-bit-winforms-applicatio) –

答えて

1

私はフォームデザイナーに行き、イベントがプロパティウィンドウに表示されるようにします。存在する場合は削除し、プロジェクトをビルドしてから、再度手動で追加し直してください。

これで解決しない場合は、フォームのコンストラクタに移動して、質問で指定したコードサンプルを使用して手動でイベントを登録します。デバッグして、イベントが発生したかどうかを確認します。

次に、イベントハンドラに別の方法を使用してみます。 "this.load + ="を使用すると自動的に生成されるものだけです。

最後に、最悪の場合のシナリオでは、フォームを再作成して、現在のフォームから要素をコピーすることができます。時には、デザイナーがフォームをねじ込み、それ自体を修正することができません。

希望すると便利です。

0

フォームクラスのコンストラクタでInitializeComponent();の呼び出しを確認します。 フォームは部分的に依然として呼び出しなしで動作します。特定のフォーム固有のイベントさえも呼び出されます。しかしフォーム上のコントロールは作成されず、this.Loadのようなイベントはもう働きません。

1

コード内のバインディングを見てください。バインディングが間違っていると、イベントが省略されることがあります(つまり、Thread.IsAliveへのバインド - 私のケース)。