Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 组合框未验证_C#_Winforms_Errorprovider - Fatal编程技术网

C# 组合框未验证

C# 组合框未验证,c#,winforms,errorprovider,C#,Winforms,Errorprovider,我第一次在windows窗体中使用ErrorProvider 我有一个简单的窗口,上面有一个组合框,其中有几个项目,默认情况下包括一个空白选择。我在底部还有一个“下一步”按钮 当我运行表单并在组合框设置为空的情况下单击“下一步”时,不会触发验证。有什么想法吗 我已经按照文档中提供的方式连接了错误提供程序 // Favorite Color ComboBox favoriteColorComboBox = new ComboBox();

我第一次在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")));
    }

我想你在点击按钮时没有任何事件。只有选择组合并移出组合时,才会进行组合框验证。在您的情况下,您没有选择组合本身,因此不存在触发任何事件的问题。试试这个:

private void _buttonNext_Click(object sender, EventArgs e)
{
    favoriteColorComboBox_Validated(sender, e);
}
单击“下一步”按钮时,它将触发与您所需相同的验证


希望有帮助。

我不得不调用ValidateChildren方法来触发验证