C# C-组合框选择的索引交换

C# C-组合框选择的索引交换,c#,combobox,C#,Combobox,我有一个组合框,上面有一个员工列表。当用户选择EmpolyeName e1时,下面的列表框将填充所选员工的数据。这些数据可以修改。所有更改完成后,用户必须按下保存按钮 但是如果用户忘记按Save并从组合框中选择另一名员工,比如e2,那么我会在这里询问用户mEssagebox是否要为员工e1保存数据 如果是,则我保存特定员工e1的数据 但是在这里,当保存数据时,组合框索引被更改,其文本显示最近选择的employee e2,但数据是employee e1 如何在comboBox中保留employee

我有一个组合框,上面有一个员工列表。当用户选择EmpolyeName e1时,下面的列表框将填充所选员工的数据。这些数据可以修改。所有更改完成后,用户必须按下保存按钮

但是如果用户忘记按Save并从组合框中选择另一名员工,比如e2,那么我会在这里询问用户mEssagebox是否要为员工e1保存数据 如果是,则我保存特定员工e1的数据

但是在这里,当保存数据时,组合框索引被更改,其文本显示最近选择的employee e2,但数据是employee e1


如何在comboBox中保留employee e1以前的旧文本,直到保存完成。很简单,当选择comboBox项时,将employee放入一个类变量中。使用此类变量而不是组合框中的项


保存或提示用户后,可以将变量设置为新选择的项。

非常简单,当选择组合框项时,将员工放入类变量中。使用此类变量而不是组合框中的项


保存或提示用户后,您可以将变量设置为新选择的项。

此处的重点应该是如何检测用户何时更改了列表框中的数据。您可以在某个地方放置一个标志,该标志将指示该特定用户的某些数据是否已更改。例如,如果列表框项目中的文本将发生更改,则可以使用事件来设置标志

例如:

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;
}

这里的重点应该放在如何检测用户何时更改了列表框中的数据上。您可以在某个地方放置一个标志,该标志将指示该特定用户的某些数据是否已更改。例如,如果列表框项目中的文本将发生更改,则可以使用事件来设置标志

例如:

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;
}

詹姆斯,我有一个共同的功能-CheckandSaveChanges。in-CheckandSaveChanges-only我处理提示和任何修改..如果有任何更改..我通过后台工作程序保存。我对combobox的selectedIndexChange调用了CheckandSaveChanges函数,但是combobox中的文本设置为最近选定的,而不是员工1以前的文本。如果用户决定不保存更改,您必须刷新列表框,即重新填充它。或者你可以在CheckAndSaveChanges方法之后进行刷新,因为不管怎样,正确的信息都会出现,因为此时你会保存新信息。james,我有一个常见的功能-CheckAndSaveChanges。in-CheckandSaveChanges-only我处理提示和任何修改..如果有任何更改..我通过后台工作程序保存。我对combobox的selectedIndexChange调用了CheckandSaveChanges函数,但是combobox中的文本设置为最近选定的,而不是员工1以前的文本。如果用户决定不保存更改,您必须刷新列表框,即重新填充它。或者,您可以在CheckAndSaveChanges方法之后执行刷新,因为不管怎样,都会显示正确的信息,因为此时您会保存新信息。