如何在 Windows 表单中动态切换面板
How to switch panels dynamically in Windows Forms
我是 C# 的新手,正在 Visual Studio 中开发 C# Windows Forms 应用程序,想用另一个面板 B 动态替换 Form 中的现有面板 A。
实现这一点的方法之一是将面板彼此叠放,使它们的左上角相互重叠。但是这种方法很难对放置在下方的面板进行更改。
我在 Java 中完成了此类工作,但尚未找到 Windows 表单的任何解决方案。
正如您指定的,您不想使用面板,然后使用 TabControl
在 运行 时间或设计时间
将Appearance
设置为按钮
设置 ItemSize
宽度为 0,高度为 1
将 Multiline
设置为 True
将 SizeMode
设置为固定
标签页上的标签现在应该不可见,但标签页仍然存在。
不过,它还可以让您更轻松地使用每个页面上的控件
根据评论更新
另一种方法是从 TabControl
继承
如此处所示See Creating Wizards for Windows Forms in C#
class WizardPages : TabControl {
protected override void WndProc(ref Message m) {
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
}
}
我是 C# 的新手,正在 Visual Studio 中开发 C# Windows Forms 应用程序,想用另一个面板 B 动态替换 Form 中的现有面板 A。
实现这一点的方法之一是将面板彼此叠放,使它们的左上角相互重叠。但是这种方法很难对放置在下方的面板进行更改。
我在 Java 中完成了此类工作,但尚未找到 Windows 表单的任何解决方案。
正如您指定的,您不想使用面板,然后使用 TabControl
在 运行 时间或设计时间
将
Appearance
设置为按钮设置
ItemSize
宽度为 0,高度为 1将
Multiline
设置为 True将
SizeMode
设置为固定
标签页上的标签现在应该不可见,但标签页仍然存在。
不过,它还可以让您更轻松地使用每个页面上的控件
根据评论更新
另一种方法是从 TabControl
如此处所示See Creating Wizards for Windows Forms in C#
class WizardPages : TabControl {
protected override void WndProc(ref Message m) {
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
}
}