winforms面板重叠窃听

lem*_*unk 3 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

我可以像每次旋转那样转换位置,但这是很多额外的代码.

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

Lar*_*ech 9

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

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

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

  • 一旦我开始遇到使用设计师无意中嵌套面板,关于文档大纲的提示对我来说是非常宝贵的. (3认同)
  • 他正在改变CheckBoxBUYER而不是BRANCH Checked属性 (2认同)