winforms面板重叠窃听

时间:2012-03-23 12:42:02

标签: c# panel parent-child

哇,哇,这个让我烦恼。 使用c#,winforms,visual studio 2010 ulti。

这是我的代码:

private void CheckBoxBranch_CheckedChanged(object sender, EventArgs e)
{   

    if (CheckBoxBranch.Checked == true)
    {
        panelBranch.Visible = true;
        //panelBranch.Parent = null;
        //PanelBuyer.Parent = null;
        //panelBranch.SendToBack();
        //PanelBuyer.SendToBack();
        PanelBuyer.Visible = false;
        CheckBoxBuyer.Checked = false;
        this.Refresh();
    }
    if (CheckBoxBranch.Checked == false)
    {
        panelBranch.Visible = false;
        this.Refresh();
    }

}

private void CheckBoxBuyer_CheckedChanged(object sender, EventArgs e)
{
    if (CheckBoxBuyer.Checked == true)
    {
        panelBranch.Visible = false;
        PanelBuyer.Visible = true;
        CheckBoxBranch.Checked = false;
        this.Refresh();
    }
    if (CheckBoxBuyer.Checked == false)
    {
        PanelBuyer.Visible = false;
        this.Refresh();
    }
}

现在这个代码工作正常,没问题,只要面板不在彼此之上。当发生这种情况时,面板 - 买方工作正常,Panel-Branch根本不会显示。

现在我认为这与分支小组成为买方小组的孩子有关,因此当我的买家逻辑运行时,它也适用于分支。

我每次都可以像轮换一样转换位置,但这是很多额外的代码。

有没有办法解决这个令人头疼的短而甜的简单的单线眼镜? (我希望)。

2 个答案:

答案 0 :(得分:9)

确保一个面板不在另一个面板内。

避免它的简单方法是在设计器中手动设置location属性。不要使用鼠标将控件拖放到位。

您还可以使用View - Other Windows - Document Outline窗口确保面板不在彼此之内。

答案 1 :(得分:0)

我想这个问题是因为一个面板位于另一个面板上而成为另一个面板的孩子,这就是为什么你不能将它设置为true的原因。要检查您是否可以右键单击面板,如果您可以选择其他面板,那么很明显该面板将另一个面板作为其父级