0

初めて Windows フォームで ErrorProvider を使用しています。

デフォルトで空白の選択を含む、いくつかの項目が含まれる単一のコンボボックスを備えた単純なウィンドウがあります。下部に [次へ] ボタンもあります。

フォームを実行し、コンボ ボックスを空白に設定して [次へ] をクリックすると、検証がトリガーされません。何か案は?

ドキュメントで提供されているように、エラープロバイダーを配線しました。

        // Favorite Color ComboBox 
        favoriteColorComboBox = new ComboBox();            
        favoriteColorComboBox.Items.AddRange(new object[] {"None","Red","Yellow" });
        favoriteColorComboBox.Validated += new EventHandler(favoriteColorComboBox_Validated);

        favoriteColorErrorProvider = new System.Windows.Forms.ErrorProvider();
        favoriteColorErrorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;

        _tableLayoutPanel1.Controls.Add(favoriteColorComboBox, 1, 1);
    }

    void favoriteColorComboBox_Validated(object sender, EventArgs e)
    {
        if (!IsColorValid())
        {
            // Set the error if the favorite color is not valid.
            favoriteColorErrorProvider.SetError(this.favoriteColorComboBox, "Must select a color.");
        }
        else
        {
            // Clear the error, if any, in the error provider.
            favoriteColorErrorProvider.SetError(this.favoriteColorComboBox, String.Empty);
        }
    }

    private bool IsColorValid()
    {
        // Determine whether the favorite color has a valid value. 
        return ((favoriteColorComboBox.SelectedItem != null) &&
            (!favoriteColorComboBox.SelectedItem.ToString().Equals("None")));
    }
4

2 に答える 2

1

検証をトリガーするには、ValidateChildren メソッドを呼び出す必要がありました。

于 2012-12-24T05:59:37.910 に答える
1

ボタンクリック時のイベントはないと思います。コンボボックスの検証は、コンボを選択してそこから移動した場合にのみ発生します。あなたの場合、コンボ自体を選択していないので、イベントを発生させることは問題ありません。これを試して:

private void _buttonNext_Click(object sender, EventArgs e)
{
    favoriteColorComboBox_Validated(sender, e);
}

[次へ] ボタンをクリックすると、同じ検証が実行されます。

それが役に立てば幸い。

于 2012-12-19T07:39:16.627 に答える