【发布时间】:2023-12-28 11:49:01
【问题描述】:
我正在尝试使其显示面板可见并将其发送到前面,以便可以看到它并与之交互,就像这样。
private void SettingsButton_Click(object sender, EventArgs e)
{
SettingsPanel.Visible = true;
SettingsPanel.BringToFront();
}
问题是点击几个按钮后,它要么显示错误的面板,要么根本不显示。有没有办法解决这个问题?
编辑:在你们问之前,我正在使用 WinForms。
【问题讨论】:
-
我假设您的面板上有控件。我还猜测您想有选择地控制面板的可见性及其包含的控件。您可能不想使用面板的 Z-Order 玩游戏。这控制了哪个控件是最前面的。作为一种猜测,如果您Bring to Front一个面板,它将隐藏它包含的控件。我要做的是更改面板的可见性并迭代面板的控件集合,从而更改每个控件的可行性。请记住,WinForms 只是 Win32 API 的一个薄包装器。
-
@FlyDog57 我一个字都听不懂,但是面板上还没有任何控件,整个面板消失了,不是控件。
-
表单上的控件具有 Z 顺序。把它们想象成一副牌中的牌。您放下的第一张牌可能会被下一张牌部分覆盖。当您说 BringToFront 时,您是从原来的位置拿起一张卡片并放在顶部。 Visibility 属性控制控件是绘制还是隐藏。把所有东西都摆出来(x、y 和 z),然后玩一下能见度。在 WinForms 中,面板包含其他控件。但是,在幕后,一切都由 Windows 控制,并且所有控件都是对等的。这就是为什么我认为使用面板的 Z 顺序会搞砸事情
-
哦,所有 WinForms 控件都有一个 Controls 属性,该属性表示该特定控件“包含”的控件集合。因此,您将控件放在面板中,如果您隐藏面板,我认为包含的控件不会被隐藏(但是,也许它们会被隐藏)。如果它们没有隐藏,您可以通过更改面板控件集合中控件的可见性来降低隐藏性
-
@Flydog57 我一点都不懂 :(