2010-12-06 11 views
1

winformsで個人的なプロジェクトに取り組んでいます。これまで経験したことのない経験があります。だから、私はWinFormsについてはかなりのn00bです。これは私が遭遇しているエラーです:Winformが2回表示される

フォームでは、私は 'AddCat'と呼ばれるボタンがあります。以下のフォームのコンストラクタと、ボタンのクリックなeventHandlerです:

 public form_BudgetTracker() 
     { 
      InitializeComponent(); 
      setEvents(); 
     } 

     public void setEvents() 
     { 
      this.btn_AddCat.Click += new System.EventHandler(this.btn_AddCat_Click); 
     } 

     private void btn_AddCat_Click(object sender, EventArgs e) 
     { 
      form_NewCat NewCatForm = new form_NewCat(); 
      var NewCatFormResult = NewCatForm.ShowDialog(); 
      NewCatForm.Show(); 
     } 

立ち上がるNewCatフォームでは、私は、[キャンセル]ボタンがあります。コード:

私が直面している問題は、[追加]をクリックすると新しいフォームが表示されることです。この時点で、[キャンセル]をクリックすると、フォームは消えますが、フォームの新しいインスタンスがすぐに表示されます。私は再度キャンセルをクリックすると、フォームが消えます。 コードのどの部分がフォームを2回表示していますか。私はコントラクターなどをチェックしましたが、それを理解できませんでした。どのような助けや指針をいただければ幸いです。

PS - 私が言及したように、私はプログラミングをwinformsに新しいので、任意の手がかりやポインタも高く評価されます。

答えて

6
private void btn_AddCat_Click(object sender, EventArgs e) 
{ 
    form_NewCat NewCatForm = new form_NewCat(); 
    var NewCatFormResult = NewCatForm.ShowDialog(); // <-- opens the first time 
    NewCatForm.Show();        // <-- opens the second time 
} 
+0

ああ、ok。それはそれを説明するでしょう。ありがとう、トン。 – xbonez

1

実行する代わりにF8キーを使用してコードをステップ実行するか、F5キーを押してください。それは実行しようとしている行を1行ずつ表示します。

2

コードから判断すると、フォームを2回表示するだけです。

 form_NewCat NewCatForm = new form_NewCat(); 
     var NewCatFormResult = NewCatForm.ShowDialog(); 
     NewCatForm.Show(); 

DialogResultがに設定されるまで、第二のラインは、第3ラインメソッドを遮断することなく、形態を示し、形状及びブロック方法を示しています。

3行目を削除するだけです!

1

削除NewCatForm.Show();

関連する問題