如何在C#中显示一个用户控件并隐藏其余用户控件

Kat*_*ate 3 c#

我是C#的新手,我正在使用Windows窗体.

我有Form120 buttons和20 user controls.我想要做的是:

当我单击button1 user control1显示并显示其余user controls隐藏时,单击button2 user control2显示,其余user controls隐藏,单击button3 user control3显示,其余user controls隐藏,依此类推.我可以通过设置其余部分UserControl.visible = True来显示一个user control并隐藏其余部分,user controls visibility = False但我不想写太多代码.

因此,我使用下面的简单代码只显示一个user control相关button的时候点击并隐藏剩下的部分user controls,但是这个代码没有运行它运行没有错误但user controls仍然可见.

任何人都知道为什么这段代码没有显示one user control并隐藏其余部分?我也很乐意听到其他想法.谢谢

private void button1_Click(object sender, EventArgs e) 
{
    foreach (Control ctrl in this.Controls)
    {
        if (ctrl .GetType() == typeof(UserControl))
        {
            ctrl .Visible = false;
        }
    }
    UserControl1.visible = True;
}
Run Code Online (Sandbox Code Playgroud)

Iva*_*oev 5

您的代码未按预期工作的原因是这种情况:

if (ctrl.GetType() == typeof(UserControl))
Run Code Online (Sandbox Code Playgroud)

GetType()返回实际的类型,它永远不会UserControl,但有些是从它派生的.

请改用以下内容

if (ctrl is UserControl)
Run Code Online (Sandbox Code Playgroud)