コンボコントロールのSelectedIndexChangedイベントの発生条件が4.0J以前のバージョンと異なります

文書番号 : 40978     文書種別 : 使用方法     登録日 : 2017/08/25     最終更新日 : 2017/08/25
文書を印刷する
対象製品
InputMan for Windows Forms 10.0J
詳細
InputMan for Windows Forms(以下、InputMan)は5.0Jにおいて大幅な機能変更が行われました。

その際に、コンボコントロールのSelectedIndexプロパティが-1に変わる場合においても、SelectedIndexChangedイベントが発生する仕様になりました。これはGcComboBoxコントロールとラッパーのコンボコントロールの両方に共通した修正です。

この仕様により、コンボコントロールに値を入力した時や項目をクリアした場合などにもSelectedIndexChangedイベントが発生するようになります。

4.0J以前のバージョンと同様の動作を実現する場合には、SelectedIndexChangedイベント内で以下のいずれかの判定を行う必要があります。
  • SelectedIndexプロパティが-1かどうか。
  • コントロールの項目数が 0 でないかどうか。
以下のサンプルコードは、GcComboBoxコントロールでの上記の判定の実装例です。

[Visual Basic]
Private Sub GcComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GcComboBox1.SelectedIndexChanged
    ' SelectedIndexを判定する場合
    If GcComboBox1.SelectedIndex = -1 Then
        Exit Sub
    End If

    ' 項目数を判定する場合
    If GcComboBox1.Items.Count = 0 Then
        Exit Sub
    'End If

    ' 実行したい処理を実装します。
    MessageBox.Show("処理を実行します。")
End Sub

[C#]
private void gcComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    // SelectedIndexを判定する場合
    if (gcComboBox1.SelectedIndex == -1)
    {
        return;
    {

    //// 項目数を判定する場合
    //if (gcComboBox1.Items.Count == 0)
    //{
    //    return;
    //}

    // 実行したい処理を実装します。
    MessageBox.Show("処理を実行します。");
}
関連情報