C#组合框事件

时间:2012-05-24 10:03:04

标签: c# events drop-down-menu combobox

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

我遇到了一个问题,但是在尝试询问用户是否想要在他们再次单击组合框时取消但是有更改要保存时会出现问题。

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

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

感谢

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

1 个答案:

答案 0 :(得分:1)

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

征求意见

创建值为false的全局bool标志。在SelectedIndexChanged event中检查此值。

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

现在,当您设置上一个选定的索引属性时,将此标志设置为true。它将触发SelectedIndexChanged event,但这次因为标志为真,所以它将从事件返回。

在下一行中设置flag = false。如果不再将其设置为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;
  }
}