【问题标题】:winforms panels overlapping buggedwinforms面板重叠窃听
【发布时间】:2012-03-23 12:42:01
【问题描述】:

哦,哇,这让我很烦。 使用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-Buyer 工作正常,Panel-Branch 根本不会显示。

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

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

有没有办法解决这个头痛又短又甜又简单的一个班轮? (我希望)。

【问题讨论】:

  • 我真的不明白你的问题是什么......
  • 问题是当复选框设置为 true 时分支没有任何反应。但如果我为买家这样做,它会完美切换。当我表单上的两个面板不在彼此之上时,此代码可以正常工作。当在上面时,分支不工作但买方工作
  • 请不要在标题前加上“C#”之类的前缀。这就是标签的用途。
  • 奇怪我之前被联系过,因为我的标题不包含前缀。那是哪一个?
  • 设计师无法判断您是打算重叠面板还是将一个面板放在另一个面板中。它猜测后者。烦恼还没有结束,如果不翻转它们的 Z 顺序,您仍然很难到达面板。更好的捕鼠器在这里:stackoverflow.com/questions/2798215/…

标签: c# panel parent-child


【解决方案1】:

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

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

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

【讨论】:

  • 他正在更改 CheckBoxBUYER 而不是 BRANCH Checked 属性
  • 我只在复选框设置为 false 时将面板设置为 false
  • 是的,但正如我所说,当面板不在表单上彼此重叠时,此代码 100% 有效。当面板在顶部时,只有买家才能工作
  • @StevenSmith 他们之间的关系如何?通过设计师?如果是这样,您必须注意一个面板实际上不在另一个面板内。
  • 一旦我开始使用设计器无意中嵌套面板,有关文档大纲的提示对我来说非常宝贵。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-18
    • 2010-10-16
    • 2018-09-17
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多