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のグローバルboolフラグを作成します。内でこの値を確認してくださいSelectedIndexChanged event

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

ここで、前に選択したインデックスプロパティを設定するときに、このフラグをtrueに設定します。発砲SelectedIndexChanged eventしますが、今回はフラグがtrueなのでイベントから戻ります。

次の行でフラグ=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;
  }
}
于 2012-05-24T11:00:35.053 に答える