2012-10-15 27 views
0

我有一個組合框並希望將更改保存在數據庫中。保存數據庫中組合框的更改

我想要做的是如果組合框被選中並且它是真的,它必須運行下面的代碼。如果它是假的,那麼它必須跳過代碼並繼續。

下面的代碼檢查組合框是否啓用。但是,當我在編譯的時候沒有選擇

private void Log() 
{ 
    if (kaartburgerlijkestand.Enabled) 
    { 
     veranderingBurgelijkestaat(); 
    } 
} 

它的說法屬實下面保存數據在數據庫中的代碼

private string veranderingBurgerlijkestaat() 
{ 
    string gebruiker = curMedewerker.Behandelnaam; 
    string bekeken = prodermaform.pKaart(); 
    string tabblad = tabControl1.SelectedTab.Text; 
    string pat = CPatient.GeefPatientNaam(patient.Id); 
    string wijz = "Burgerlijkestaat: " + kaartBurgerlijkestand.Text; 

    CDb dcon = new CDb(); 

    try 
    { 
     if (dcon.Open()) 
     { 
      SqlCommand cmd = new SqlCommand("INSERT INTO dbo.loggen(Gebruiker, Bekeken, Tabblad, Patientnaam, Wijziging, Datum) VALUES(@gebruiker, @bekeken, @tabblad, @pat, @wijz, @datum)", dcon.Conn); 
      cmd.Parameters.AddWithValue("@gebruiker", gebruiker); 
      cmd.Parameters.AddWithValue("@bekeken", bekeken); 
      cmd.Parameters.AddWithValue("@tabblad", tabblad); 
      cmd.Parameters.AddWithValue("@pat", pat); 
      cmd.Parameters.AddWithValue("@wijz", wijz); 
      cmd.Parameters.AddWithValue("@datum", DateTime.Now); 
      cmd.ExecuteNonQuery(); 
      cmd.Dispose(); 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    finally 
    { 
     dcon.Close(); 
    } 

    return wijz; 
} 

有人能告訴我一個例子,如何做到這一點

我找到了解決方案

我已經做了檢查

private void doCheck(object sender, EventArgs e) 
{ 
    cmbox = false; 

    if (kaartBurgerlijkestaat.Focused) 
    { 
     veranderingBurgerlijkestand();     
    } 

    cmbox = true; 

} 

然後我用了SelectedValueChanged事件

private void kaartBurgerlijkestand_SelectedValueChanged(object sender, EventArgs e) 
{ 
    if (cmbox) 
     doCheck(sender, e); 
} 

,它工作正常。

我想謝謝大家的幫助!

+0

你的意思了_The組合框什麼是選擇,它是true_?你的意思是_當組合框有焦點時? – Steve

+0

請張貼截圖。我不確定我是否正確理解問題。 – Ekk

+0

編譯時間通過使用FLAG(bool)變量避免組合框選擇更改 – andy

回答

0

添加事件監聽器,kaartburgerlijkestand.Enabled只檢查您的組合框是否啓用選擇或不啓用。 加入這一行你InitializeComponent();Form.cs文件

kaartburgerlijkestand.SelectedIndexChanged += new System.EventHandler 
(this.kaartburgerlijkestand_SelectedIndexChanged); 

而且後添加一個功能上面的代碼:

private void kaartburgerlijkestand_SelectedIndexChanged(object sender, EventArgs e) 
    { 
      veranderingBurgelijkestand(); 
    } 
+0

它的工作原理,但我有一個與多種形式工作的另一個問題。當我打開表單時,它會保存數據,當我點擊下一個按鈕時,它也會保存數據。我想要的是隻保存數據,如果我點擊保存按鈕 – MrAden

+0

在這種情況下編輯您的問題,使其更清晰。但我可以猜測,你的問題是因爲你創建表單時調用了數據庫函數的更新。尋找你在構造函數中調用它,並刪除如果存在 –

相關問題