2009-10-13 139 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