我在 TabController 中有两个选项卡的程序,我也有一个我想一直放在前面的面板。尽管我在哪个标签页中。我尝试将面板设置为BringToFront()
,但是当我更改标签页时这似乎不起作用。任何建议如何解决这个问题?
3 回答
如果 Panel包含在 TabPage 中,那么您必须在选项卡更改时手动将其切换到当前选项卡,然后调用 BringToFront()。
另一种方法是使 Panel 直接包含在Form中,但在 TabControl 前面(就像它“浮动”在它上面一样)。然后它就会呆在那里。您必须手动调整 Panel 的 Location() 属性以使其正确(您不能将它拖到 TabPage 上,因为它会掉入其中),或者您可以通过 Load( ) 表单的事件。
编辑:
例如,如果您在设计时将“panel1”正确定位在TabPage中,则可以使用如下代码将其切换到 Form:
private void Form1_Load(object sender, EventArgs e)
{
Point pt = panel1.PointToScreen(new Point(0, 0));
panel1.Parent = this;
panel1.Location = this.PointToClient(pt);
panel1.BringToFront();
}
将面板设置在 tabcontroller 之外,并将其设置为 dockstyle。同时设置tabcontroller的dockstyle。
面板属于特定的标签页。当您切换到另一个标签页并调用 BringToFront() 时,它不会产生任何效果,因为您现在在另一个标签页上。所以你需要通过纠正一些代码来解决这个问题。有两种方法:
1)您可以在设计时将该面板放置在每个标签页上(如果您不需要该面板上的一些共享数据)。
2)您应该挂钩 OnTabPageChanged 事件并将面板从旧标签页移动到您切换到的页面(如果您确实需要该面板上的一些共享数据)。我认为这是你的情况。