如何检查控制类型在Switch Case中

Has*_*eeb 5 c# winforms

如何在switch case语句中检查控件类型?

Private void CheckControl(Control ctl) 
{
    switch (ctl) {
        case TextBox: MessageBox.Show("This is My TextBox");
        break;

        case Label: MessageBox.Show("This is My Label");
        break;
    }
}  
Run Code Online (Sandbox Code Playgroud)

以下是上述声明中的错误:

"文本框"是一种类型,在给定的上下文中无效

Jon*_*eet 16

从C#7开始,您可以使用类型模式:

private void CheckControl(Control ctl)
{
    switch (ctl)
    {
        case TextBox _: 
            MessageBox.Show("This is My TextBox");
            break;
        case Label _: 
            MessageBox.Show("This is My Label");
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

以下_discard的语法,这意味着您之后不需要以TextBox(或Label)方式访问该值.

如果您确实想要访问特定类型的成员,可以引入模式变量:

private void CheckControl(Control ctl)
{
    switch (ctl)
    {
        case TextBox textBox: 
            // Use textBox for any TextBox-specific members here
            MessageBox.Show("This is My TextBox");
            break;
        case Label label: 
            // Use label for any Label-specific members here
            MessageBox.Show("This is My Label");
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)