显示隐藏的表格
我如何显示已隐藏使用的内容
this.Hide();
我试过了
MainMenuForm.Show();
这只是说我需要一个对象参考。 然后我尝试了:
MainMenuForm frmMainMenu = new MainMenuForm(); frmMainMenu.Show();
这似乎表明了适当的forms。 但是当你退出应用程序时,它仍然保留在内存中,因为它没有显示隐藏的表单,而是显示了表单的新版本。 实际上有2个表单实例(一个隐藏,一个可见)。
只是为了澄清,MainMenuForm是启动forms。 单击(例如)选项1时,MainMenuForm会在打开选项1表单时隐藏自身。 我想知道的是如何制作MainMenuForm打开的选项1表单“取消隐藏”MainMenuForm然后关闭它自己。
这里的正确程序是什么?
提前致谢。
执行以下操作时:
MainMenuForm frmMainMenu = new MainMenuForm(); frmMainMenu.Show();
您正在创建并显示MainMenuForm的新实例。
为了显示和隐藏MainMenuForm的实例,您需要保存对它的引用。 即当我做紧凑框架应用程序时,我有一个使用单例模式的静态类,以确保我在运行时只有一个表单实例:
public class FormProvider { public static MainMenuForm MainMenu { get { if (_mainMenu == null) { _mainMenu = new MainMenuForm(); } return _mainMenu; } } private static MainMenuForm _mainMenu; }
现在您可以使用FormProvider.MainMenu.Show()
来显示表单,使用FormProvider.MainMenu.Hide()
来隐藏表单。
Singleton模式 (感谢Lazarus的链接)是一种管理WinForms应用程序中表单的好方法,因为它意味着您只需创建一次表单实例。 第一次通过其各自的属性访问表单时,表单被实例化并存储在私有变量中。
例如,第一次使用FormProvider.MainMenu
,将实例化私有变量_mainMenu。 您随后调用FormProvider.MainMenu
,_mainMenu会立即返回,而不会再次实例化。
但是,您不必将所有表单类存储在静态实例中。 您可以将表单作为控制MainMenu的表单上的属性。
public partial class YourMainForm : Form { private MainMenuForm _mainMenu = new MainMenuForm(); protected void ShowForm() { _mainMenu.Show(); } protected void HideForm() { _mainMenu.Hide(); } }
更新:
只需阅读MainMenuForm
是您的启动表单。 实现类似于上面的单例示例的类,然后在应用程序的Program.cs文件中将代码更改为以下内容:
Application.Run(FormProvider.MainMenu);
然后,您可以通过FormProvider
类从应用程序的任何位置访问MainMenuForm
。
最简单和最简单的方法是使用LINQ并查看Application.OpenForms
属性。 我假设你只有1个表单实例(希望如此!),否则请确保在隐藏表单上有一些公共属性才能区分它。
以下代码将为您取消隐藏表单:
var formToShow = Application.OpenForms.Cast
您需要在创建第一个表单时保留对第一个表单的引用,然后保存该引用的代码可以在其上调用Show
。
如果您没有从某个地方打开该表单,但它被设置为启动表单,那么您需要更改它以便您有一个打开该表单的Main方法,或者您可以让该表单存储对某个地方的引用从其他地方访问。
例如,一种快速而丑陋的方法是,向mainform添加一个公共静态属性,然后当你隐藏表单时,它也会将其写入this
属性,然后可以在代码的其他部分需要时检索该属性。
实际上这对我有用….
public class MainWindow : Form { Form _mainMenuForm = new MainMenuForm(); }
通过按钮单击事件调用它。
private void buttonclick() { if (_mainMenuForm.Visible) { _mainMenuForm.Visible = false; } else { _mainMenuForm.Visible = true; } }
存储对表单的引用并在其上调用.Hide()和.Show()。
例如:
public class MainWindow : Form { private Form _mainMenuForm = new MainMenuForm(); public void btnShowMenuForm_Click(...) { _mainMenuForm.Show(); } public void btnHideMenuForm_Click(...) { _mainMenuForm.Hide(); } //etc }
此示例假定您有一个启动MainMenuForm的表单。
调用引用的表单。
喜欢:
Calling parent ---------- public MyForm f {get;set;} void DoStuff() { f = new MyForm(); f.Show(); } MyForm ---------- void DoOtherStuff() { this.hide(); } Parent ---------- void UnHideForm() { f.show(); }
另一个更简单的方法是循环打开表单以查看哪些仍在运行并打开它…
上述就是C#学习教程:显示隐藏的表格分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
foreach (Form oForm in Application.OpenForms) { if (oForm is MainMenuForm) { oForm.Show(); break; } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1044489.html