多个窗体一个窗口c#可能或只有面板/用户控制



这是我的问题,我是c#新手(自学)事情是这样的,我正在制作一款基本的模拟游戏,没有什么复杂的,但我已经完成了设计和基本功能。

然而,为了实现它,我目前使用多个表单(Visual Studio 2013)我有一个main表单里面有action按钮

当我想进入用户个人资料页面时,我输入

Btn_profileview Click(object sender, EventArgs e){
 Form profile = new Form();
        profile.Show();
}

用户将实现这些更改(例如更改名称),这些更改将被写入文本文件,以便在程序的其他区域使用。然而,它打开了一个新的窗口,我已经尝试过模态和非模态窗口,而模态的好处,所以他们必须实际关闭窗口解决问题,我宁愿让它只是覆盖预先存在的窗体,然后在关闭回到"主"屏幕,而不实际使用多个窗口。

现在我被告知UserControl和/或Panel将解决这个问题,但它会导致一个完整的重新设计从多个窗体移动到多个面板屏幕,并弄清楚如何让这些工作(可见和不可见),我假设它不会是非常困难的东西沿着面板"name"。show();和面板"名字".close ();

但是否有可能实际添加一行代码到已有的代码(以免导致一个完整的重新设计)或面板和用户控制是唯一真正的方式来实现1个连续的窗口?

paqogomez是对的:有很多方法可以做到这一点。

这里有一个结合了很多优点:

您可以在窗口上创建一个不可见的 Tab,其中包含您需要的任意多的页面。在每个标签上放置一个Panel,并在其中创建所有控件。这并不意味着而不是意味着您必须从头开始—您可以移动和放下您已经拥有的控件,而不会有太多麻烦。当然,您需要关闭对接和锚,但除此之外,这是一个简单的过程。

如果在第二个表单上有与同名的控件,则应该将这些名称更改为唯一的。我希望所有控件都有合适的名称,尤其是Labels被忽视了,至少在这里…(运气好的话,你甚至可以使用剪切和粘贴将控件从另一个表单复制到panel2!)

这个技巧的最大优点是您可以在同一个表单的设计器中完成所有工作。Tab控件仅用作容器,您可以在其中保留面板,而无需添加到UI,也无需让用户控制所显示的内容。

接下来在主表单中创建一个 Panel变量:
Panel currentPanel;

加载时,像这样分配第一个'real' Panel给它:

currentPanel = panel1;
this.Controls.Add(currentPanel);

之后,每次你想切换,你重新分配你需要的面板,像这样:

this.Controls.Remove(currentPanel);
currentPanel  = panel2;  // or whichever panel you want to show..
this.Controls.Add(currentPanel );

如果你真正的面板被停靠来填充选项卡,currentPanel将填充表单。您仍然可以随时访问每个面板和每个控件的名称,但是您不会看到选项卡的开销,并且表单永远不会更改,除了完整的内容。

最新更新