【问题标题】:C# -comboBox Selected IndexChangeC# -comboBox 选定的索引更改
【发布时间】:2009-10-13 07:29:09
【问题描述】:

我有一个包含 EmpolyeeNames 列表的 ComboBox。当用户选择 EmpolyeeName“e1”时,下面的 ListBox 将填充所选员工的数据。可以修改该数据。完成所有更改后,用户必须按“保存”按钮。

但是如果用户忘记按保存并从组合框中选择另一个员工说“e2”,我在这里问用户 mEssagebox“你想为员工“e1”保存数据吗 如果是,那么我保存特定员工“e1”的数据,

但是这里在保存数据时组合框索引发生了变化,其文本显示最近选择的员工“e2”,但数据是员工“e1”的数据。

如何在组合框中保留以前的employye“e1”文本,直到保存完成。??

【问题讨论】:

    标签: c# combobox


    【解决方案1】:

    Quite simply, when the combobox item is selected put the employee into a class variable.使用此类变量而不是组合框中的项目。

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

    【讨论】:

      【解决方案2】:

      您应该真正关注的是如何检测用户何时更改了列表框中的数据。您可以在某处放置一个标志,以指示该特定用户的某些数据是否已更改。例如,如果列表框项中的文本会发生变化,您可以使用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;
      }
      

      【讨论】:

      • james,我有一个通用函数-CheckandSaveChanges()。在 -CheckandSaveChanges() 中,只有我处理提示和任何修改..如果有任何更改..我通过后台工作人员保存。我在组合框的 selectedIndexChange 上调用 CheckandSaveChanges 函数,但是组合框中的文本设置为最近选择的而不是雇员 1 的先前文本。
      • 如果用户决定不保存更改,您将不得不刷新列表框,即重新填充它。或者您可以在 CheckAndSaveChanges 方法之后进行刷新,因为无论如何都会出现正确的信息,因为此时您已经保存了新信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      相关资源
      最近更新 更多