首页 > 解决方案 > 使用面板的选项卡系统

问题描述

我正在尝试使其到达面板可见的位置并将其发送到前面,以便可以看到它并与之交互,就像这样。

private void SettingsButton_Click(object sender, EventArgs e)
{
    SettingsPanel.Visible = true;
    SettingsPanel.BringToFront();
}

问题是点击几个按钮后,它要么显示错误的面板,要么根本不显示。有没有办法来解决这个问题?

编辑:在你们问之前,我正在使用 WinForms。

标签: c#winformstabspanel

解决方案


您所描述的类似于TabControl替代方案。这是一个例子:

选项卡替代

您可以简单地通过使其可见并停靠以填充来管理当前面板。隐藏其他面板。

public partial class FormTabsAlternative
    : Form
{
    int         m_current = 0;
    List<Panel> m_tabs    = new List<Panel>();

    public FormTabsAlternative()
    {
        InitializeComponent();

        AddTab(pnl1);
        AddTab(pnl2);
        AddTab(pnl3);
        AddTab(pnl4);

        SetUpTabsAndButtons();
    }

    private void AddTab(Panel pnl)
    {
        m_tabs.Add(pnl);

        pnl.Dock = DockStyle.Fill;
    }

    private void OnLeftClick(object sender, EventArgs e)
    {
        if (m_current > 0)
        {
            m_current--;

            SetUpTabsAndButtons();
        }
    }

    private void OnRightClick(object sender, EventArgs e)
    {
        if (m_current < m_tabs.Count - 1)
        {
            m_current++;

            SetUpTabsAndButtons();
        }
    }

    private void SetUpTabsAndButtons()
    {
        for (int index = 0; index < m_tabs.Count; index++)
        {
            var panel     = m_tabs[index];

            panel.Visible = index == m_current;
        }

        btnLeft .Enabled = m_current > 0;
        btnRight.Enabled = m_current < m_tabs.Count - 1;
    }
}

推荐阅读