1

目前我正在用 c# 制作一个小应用程序,它要求用户使用组合框选择一个对象,从那里用户可以编辑下面该对象的属性,然后将它们保存到数据库中。

我在尝试询问用户是否要在再次单击组合框但要保存更改时取消时遇到问题。

我所拥有的最好的是下面,但是即使下拉高度意味着他们看不到选项,用户仍然可以使用键盘来选择项目。

private void cmbBooks_DropDown( object sender, EventArgs e )
        {
        if ( CheckSave( ) )     //checksave returns true if they want to cancel
            {
            cmbBooks.DropDownHeight = 1;
            }
        }

谢谢

编辑 我已经用 SelectedIndexChanged 事件尝试过它,从那里我可以停止框继续并打开该对象,但是组合框将继续选择他们试图选择的对象并且组合框仍然保持打开状态?

4

1 回答 1

1

检查SelectedIndexChanged事件。如果用户取消,则将属性设置SelectedIndex回较早的值。

对于您的评论

创建一个值为 false 的全局布尔标志。检查里面的这个值SelectedIndexChanged event

If it is true. 
    return from code
Else 
    continue with your code. 

现在,当您设置先前选择的索引属性时,将此标志设置为 true。它会触发SelectedIndexChanged event,但这次因为 flag 为真,所以它会从事件中返回。

在下一行设置标志 = 假。如果您不再次将其设置为 false,它将始终返回代码之外。

bool flag = false;
private void mycombobox_SelectionIndexChanged(object sender, EventArgs e)
{
  If (flag)
    return;

  //Your normal code.

  If (Canceledbyuser == true)
  {
      flag = true;
      mucomboBox.SelectedIndex = previousindex;
      flag = false;
  }
}
于 2012-05-24T11:00:35.053 回答