【问题标题】:C# hiding and showing a panel on top of a splitcontainerC# 在拆分容器顶部隐藏和显示面板
【发布时间】:2010-09-29 08:12:42
【问题描述】:

我有一个由几个拆分容器分隔的屏幕。其中一个包含我制作的用户组件的矩形,这些“矩形”代表医院病床。我想做的是让用户可以选择在“用户组件视图”和“数据网格视图”之间切换。

所以我创建了一个面板 pnlPatients,我给它提供了与带有用户组件的 splitcontainer 相同的大小。当用户选择“更改视图”时,程序应该在两种布局之间切换。

代码: 尝试1:

if (pnlPatients.Visible)
  pnlPatients.Hide();
else
{
  pnlPatients.Show();
  pnlPatients.BringToFront();
}

尝试 2:

pnlPatients.Visible = !pnlPatients.Visible;
pnlPatients.Invalidate();

奇怪的是,这两种尝试都是这样工作的:

用户首先看到的是“用户组件视图”。 如果他切换视图,它将正确地在前一个视图的顶部显示面板。 如果他再次切换,则面板将正确隐藏。 如果他随后再次切换视图,则面板将不会显示。请注意:调试时,面板的可见属性正确更改为 TRUE 或 FALSE。但由于某种原因,只有第一次将其设置为可见 TRUE 时才能看到面板。

有人有想法吗?

最好的问候

编辑:我也尝试过,但没有成功:

pnlPatients.Visible = !pnlPatients.Visible;
if (pnlPatients.Visible)
{
  pnlPatients.BringToFront(); 
}
else
{
  pnlPatients.SendToBack();
}

【问题讨论】:

  • 两个面板的父级是什么?
  • 基本的 Windows 窗体是父窗体。

标签: c# winforms panel


【解决方案1】:

如果有人不想浏览 Tony 的所有链接:

this.splitContainer.Panel2.Hide();
this.splitContainer.Panel2Collapsed = true;

【讨论】:

  • 我认为没有必要隐藏 Panel2。折叠应该就足够了,虽然我没有测试过。
【解决方案2】:
    int control =  0;

    private void hideShowLogToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (control == 0)
        {
            control = 1;

            splitContainer1.Panel2Collapsed = false;

            splitContainer1.Panel1Collapsed = true;

        }
        else if (control == 1)
        {
            control = 0;

            splitContainer1.Panel2Collapsed = true;

            splitContainer1.Panel1Collapsed = false;
        }
    }

【讨论】:

    【解决方案3】:

    通过调用this.Invalidate(true); 使主机窗体无效以强制它重绘所有子窗体,而不是使面板控件无效

    【讨论】:

    • 我会在稍后尝试,我现在尝试添加一个额外的拆分容器,看看我是否可以以某种方式隐藏或显示它们。使用下面提供的链接托尼。如果这不起作用,我会试试这个,谢谢。
    【解决方案4】:
     bool state;
        private void btn_Click(object sender, EventArgs e)
        {
            if (state)
            {
                splitContainer1.Panel1Collapsed = true;
                splitContainer1.Panel2Collapsed = false;
                state = false;
    
            }
            else
            {
                splitContainer1.Panel1Collapsed = false;
                splitContainer1.Panel2Collapsed = true;
                state = true;
    
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      • 2011-03-27
      • 2023-03-03
      相关资源
      最近更新 更多