c# - 使用面板的选项卡系统
问题描述
我正在尝试使其到达面板可见的位置并将其发送到前面,以便可以看到它并与之交互,就像这样。
private void SettingsButton_Click(object sender, EventArgs e)
{
SettingsPanel.Visible = true;
SettingsPanel.BringToFront();
}
问题是点击几个按钮后,它要么显示错误的面板,要么根本不显示。有没有办法来解决这个问题?
编辑:在你们问之前,我正在使用 WinForms。
解决方案
您所描述的类似于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;
}
}
推荐阅读
- mongodb - 需要光标选项
- kubernetes - Helm 3:连接到本地 Kubernetes 时出现 x509 错误
- java - 如何测试 onPlayerRenameItem 事件中的玩家是否有一定的权限?
- interface - 如何在java pojo中处理来自graphql模式的接口
- authentication - 我可以将密钥文件作为参数传递以使用 gsutil 连接到 Google Cloud Storage 吗?
- android - 如何获取当前日期并将其存储到 sqlite。之后将其绘制在 x 轴的图中?
- php - 按特定字段名从数据库中返回所有文件名
- mysql - MySQL连接三个查询而不增加记录
- java - 如何使用 JSF 和 Quarkus 显示自定义错误页面?
- typo3 - 无法覆盖 TYPO3 中的视图(部分、模板、布局)路径