c# - 在 C# 中隐藏/显示 Windows 窗体面板

标签 c# winforms panel

<分区>

我尝试在 C# 中显示/隐藏面板,但是当我单击按钮 1 时,我想看到面板 1,但出现了面板 2。 当我点击 button2 时,panel2 消失了。 但是当我先点击button2时,panel2没有出现。 我不知道我的代码有什么问题,但它在这里:

public Form3()
    {
        InitializeComponent();
    }

    bool show1;
    bool show2;
    private void button1_Click(object sender, EventArgs e)
    {
        if(show1)
        {
            panel1.Visible = false;
            show1 = false;
        }
        else
        {
            panel1.Visible = true;
            show1 = true;
        }
        Application.DoEvents();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        if (!show2)
        {
            panel2.Visible = true;
            show2 = true;
        }
        else
        {
            panel2.Visible = false;
            show2 = false;
        }
        Application.DoEvents();
    }

最佳答案

不要使用标志,因为您的按钮行为将由标志的状态决定。

最好是按照您想要的方式进行编码。如果您希望每个 Button 使相应的面板可见而其他面板不可见:

private void button1_Click(object sender, EventArgs e)
{
     panel1.Visible = true;
     panel2.Visible = false;
     //Application.DoEvents();
}

private void button2_Click(object sender, EventArgs e)
{
     panel2.Visible = true;
     panel1.Visible = false;
     //Application.DoEvents();
}

或者,如果您希望每个按钮独立控制每个面板的可见性,请执行以下操作:

private void button1_Click(object sender, EventArgs e)
{
     panel1.Visible = !panel1.Visible;
     //Application.DoEvents();
}

private void button2_Click(object sender, EventArgs e)
{
     panel2.Visible = !panel2.Visible;
     //Application.DoEvents();
}

最后,Application.DoEvents() 可以删除(归功于 Thorsten Dittmar ),因为在 Click 方法完成后控件将立即返回到 UI 线程.阅读他的 comment和提到的link .

关于c# - 在 C# 中隐藏/显示 Windows 窗体面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35741177/

相关文章:

php - 用户类型的登录面板问题

c# - 使用 CSOM for Sharepoint Online 筛选 TaxonomyFieldType 字段

c# - 拖放时吞下异常

c# - 了解非 bool 参数之间的按位比较

python - 将 Pandas Data Frames 存储在字典中或面板中更好?

c++ - 在mfc中如何实现可停靠对话框?

c# - 拒绝访问用户文件夹

c# - 外部联接在 Linq 查询 : The method 'Join' cannot follow the method 'SelectMany' or is not supported 中不起作用

c# - 等待在 selenium 和 c# 中完成下载文件

c# - Microsoft Sans Serif 字体未在中文本地化 Windows 中使用