2015-06-29 64 views
0

我正在寫在C#的WinForms程序並沒有被綁定到實體框架對象TextBox在button_Click的代碼調用行爲不同於實際點擊

BindingList<Settings> bindingList = BillContext.Settings.Local.ToBindingList(); 
field6TextBox.DataBindings.Add("Text", bindingList, "CustomerField6"); 

我創建了一個保存按鈕保存更改到數據庫:如果我的保存按鈕點擊

private void saveCustomerFields_Click(object sender, EventArgs e){ 
    BillContext.SaveChanges(); 
} 

一切工作正常,但如果我使用,我已經爲保存按鈕創建的快捷鍵:

private void field6TextBox_KeyDown(object sender, KeyEventArgs e){ 
    if(e.KeyData.Equals(Keys.Enter)) 
     saveCustomerFields_Click(sender, e); 
} 

private void MainForm_KeyDown(object sender, KeyEventArgs e){ 
    if(e.KeyData == (Keys.Control | Keys.S)){ 
     saveCustomerFields_Click(sender, e); 
    } 
} 

雖然節省單擊事件處理程序被調用,但BillContext.Settings.Local不會改變,它會導致未保存到數據庫中的變化。

點擊和按鈕點擊事件句柄的代碼調用如何產生不同的後果(考慮到我不使用方法輸入)?以及我如何使我的快捷鍵工作?

+0

總之,它不應該。 SaveChanges是做什麼的? – Sayse

+0

'BillContext'是我的類,它擴展了實體框架'DbContext'。它將此上下文中所做的所有更改保存到底層數據庫。 – raven

回答

1

嘗試更換

saveCustomerFields_Click(sender, e); 

saveCustomerFields.PerformClick(); 
+0

感謝兄弟。這個工程 – raven

+0

你的問題是Click事件使用KeyDown事件中的參數(sender和e)。順便說一句,請標記這個正確的,如果它幫助:) –

相關問題