2012-04-18 22 views
0

私はC#のアマチュアです。私はここで何が起こっているのか分かりません。それは本当に問題ではない、私はそれのquickfixを作ることができるように、私はまだ知りたいなぜなぜ同じ機能が2つの異なることをしますか?

免責事項:私はこれがおそらくこのプログラムを設計する最良の方法ではないことを知っていますが、開発に非常に短い時間を与えられており、期限までに出荷しようとしています。

私のプログラムにはメインフォームがあります。このフォームは、1/2ボタンが押されたときに第2のフォームを呼び出します。

private void setupShow(int show) 
    { 
     fSetup setup = new fSetup(show); 
     setup.Show(); 
     setup.FormClosed += new FormClosedEventHandler(setup_FormClosed); 
    } 

その関数を呼び出すボタン1、それはメインフォームを非表示にし、次のフォームが開きます。これらのボタンは、第二のフォームを開くために同じ関数を使用します。しかし、2番目のボタンがその関数を呼び出すと、メインフォームは開いたままになりますが、2番目のフォームが開きます。

これは何が原因でしょうか?

Button1はbutton2よりかなりコードが多く、機能が必要な場合はここに投稿することができますが、大半の画面がいっぱいになります。

編集:

int show; 

は、私は2番目の形式で実行される機能のために使うだけの変数です。それは窓が閉ざされている限り、何にも関係していない。

ボタン1:この機能のみを呼び出します。コンボボックス内の文字列から整数切り出し及び第二形態

に渡す。機能は、その行の挿入されたIDを取得し、第二の形態

private void CheckFields() 
    { 
     OleDbCommand insertParty; 
     OleDbDataAdapter partyAdapt = new OleDbDataAdapter(); 
     int nameL = PName.Text.Length; 
     int newPartyID = 0; 

     if (nameL > 0) 
     { 
      String test = "INSERT INTO Parties (PartyName, BackgroundImg) VALUES (?, ?)"; 

      insertParty = new OleDbCommand(test, Parties); 
      insertParty.Parameters.AddWithValue("PartyName", PName.Text); 
      insertParty.Parameters.AddWithValue("BackgroundImg", tBrowse.Text); 


      Parties.Open(); 
      insertParty.ExecuteNonQuery(); 

      NewPartyForm.ActiveForm.Visible = false; 


      OleDbCommand selectnewParty; 
      OleDbDataAdapter newpartyAdaptr = new OleDbDataAdapter(); 
      String selectNew = "SELECT TOP 1 PartyID, PartyName FROM Parties ORDER BY PartyID DESC"; 
      selectnewParty = new OleDbCommand(selectNew, Parties); 
      OleDbDataReader newReader = selectnewParty.ExecuteReader(); 

      while (newReader.Read()) 
      { 
       newPartyID = newReader.GetInt32(0); 
      } 

      setupShow(newPartyID); 
     } 
     else 
      MessageBox.Show("Please Create a Party Name"); 
    } 

ボタン2に渡し、データベースに挿入します

私が言ったように、このコードは素人によって非常に迅速に開発されています。これは私が通常行うことではありませんが、本当に考える時間はあまりありません。笑

第二に、フォームの初期機能:

public fSetup(int partyID) 
    { 
     InitializeComponent(); 
     pID = partyID; 
     lpID.Text += " " + pID.ToString(); 
    } 
+5

あなたが投稿したコードには説明がありません。関連するコードをすべて投稿してください。 –

+4

トラブルシューティング/デバッグの鍵は、 de。あなたがここに投稿できるほどの長さにそれをトリムするなら、私はあなたが答えを見つけることを賭けるでしょう。 –

+0

'fSetup'コンストラクタに渡される' int show'パラメータの意味と使い方を詳しく調べます。 –

答えて

4

私は別の行動の原因は、ボタン1のコードでは、この行であることを疑う:

NewPartyForm.ActiveForm.Visible = false; 

全く同様の行がコードにありませんボタン2について

+0

これは私がこのプロジェクトで行った2番目の馬鹿げた動きです。私はそれを数回見て、どこに隠しているのか分からなかった。lol – mawburn

+1

+1すべてのDbコード内のGUI呼び出しを見つけるため – NSGaga

+0

@NSGagaありがとう。それはたいてい運が良かった。あなたの「苦痛を感じる」コメントを読んだ後、私はコードを見て、それが本当にどれほど痛いかを見てみることにしました。実際には痛いという結論に至ったとき、私はその行に気づいた。 – phoog

関連する問題