Панели winforms перекрываются прослушивается - PullRequest
3 голосов
/ 23 марта 2012

Ого, это меня раздражает. Использование 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 вообще не отображается.

Теперь я думаю, что это как-то связано с тем, что панель филиала становится дочерней по отношению к панели покупателя, поэтому, когда моя логика работает для покупателя, она применяется и к ветви.

Я мог бы преобразовывать там позиции каждый раз, как поворот, но это много лишнего кода.

Есть ли способ решить эту головную боль, хороший короткий, простой и простой вкладыш? (Желаю).

Ответы [ 2 ]

9 голосов
/ 23 марта 2012

Убедитесь, что одна панель не находится внутри другой панели.

Простой способ избежать этого - установить свойство location вручную в конструкторе. Не используйте мышь для перетаскивания элементов управления на место.

Вы также можете использовать окно View - Other Windows - Document Outline, чтобы убедиться, что панели не находятся внутри друг друга.

0 голосов
/ 23 марта 2012

Полагаю, проблема в том, что одна панель располагается поверх другой, становясь дочерней по отношению к другой панели, поэтому вы не можете установить для нее значение true. Чтобы проверить, что вы можете щелкнуть правой кнопкой мыши на своей панели и если у вас есть возможность выбрать другую панель, тогда ясно, что эта панель имеет другую панель в качестве родителя

...