2009-10-13 142 views
0

我有一個ComboBox有一個EmpolyeeNames列表。當用戶選擇EmpolyeeName「e1」時,下面的列表框會填入選定員工的數據。該數據可以修改。用戶必須在完成所有更改後按下保存按鈕。C#-comboBox選定IndexChange

但是,如果用戶忘記按保存,並選擇從ComboBox另一位員工說,「E2」,在這裏,我問用戶信息框「是否要保存員工數據‘E1’ 如果是,那麼我保存的數據特別是員工「E1」,

但這裏同時節省了數據組合框中指數得到改變和它的文本顯示最近選擇員工「E2」,但數據是員工的「E1」的。

我怎麼能留住在comboBox中直到保存完成後,僱員眼前的「e1」文本才被完成。

回答

3

很簡單,w如果選擇了組合框項目,則將員工放入類變量中。使用此類變量而不是組合框中的項目。

保存(或提示)用戶後,您可以將變量設置爲新選擇的項目。

1

您的重點應該放在如何檢測用戶何時更改列表框中的數據。你可以在某個地方放置一個標誌,這個標誌表示某個用戶的某些數據是否已經更改。例如,如果它是在列表框項目中更改的文本,則可以使用TextChanged事件來設置標誌。

實施例:

bool employeeEdited = false; 

private ComboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (employeeEdited) 
    { 
     // prompt user to save 
    } 
    // reset flag 
    employeeEdited = false; 
} 

private void ListBox1_TextChanged(object sender, EventArgs e) 
{ 
    employeeEdited = true; 
} 
+0

詹姆斯,具有一個共同的功能-CheckandSaveChanges 林()。 在-CheckandSaveChanges()只有我處理提示和任何修改..如果有任何更改..我保存通過後臺工作。 我在combobox的selectedIndexChange上調用CheckandSaveChanges函數,但是combobox中的文本設置爲最近選擇的而不是employee1的前一文本。 – Anees 2009-10-13 07:56:22

+0

您必須刷新列表框,即如果用戶決定不保存更改,請重新填充它。或者您可以在CheckAndSaveChanges方法之後執行刷新,因爲無論如何無論如何都會顯示正確的信息,因爲您現在已經保存了新信息。 – James 2009-10-13 07:59:05