我第一次在Windows窗体中使用ErrorProvider。
我有一个简单的窗口,上面有一个组合框,里面有几个项目,默认情况下包括一个空白选项。我底部还有一个Next按钮。
当我运行表单并单击下一步并将组合框设置为空白时,我的验证不会触发。有什么想法吗?
我已按照文档中的说明连接了错误提供程序。
// 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")));
}
答案 0 :(得分:1)
我认为按钮点击没有任何事件。仅当您选择组合并移出它时,才会发生组合框验证。在你的情况下,你没有选择组合本身,所以没有触发任何事件的问题。试试这个:
private void _buttonNext_Click(object sender, EventArgs e)
{
favoriteColorComboBox_Validated(sender, e);
}
单击“下一步”按钮时,它将触发相同的验证。
希望它有所帮助。
答案 1 :(得分:1)
我不得不调用ValidateChildren方法来触发验证。