2012-06-12 86 views

回答

2

如果你真的要关闭的主要形式,但离开了应用程序的运行,你可以让你的默认类启动应用程序上下文:

using(MyContext myContext = new MyContext()) 
{ 
    Applicaton.Run(myContext); 
} 

其中MyContext继承自ApplicatonContext

您的应用程序上下文可以根据需要加载和关闭窗体。我在一个项目中执行此操作,我在上下文中启动登录表单。只有成功完成主表单才会加载。我还允许通过终止主窗体并重新加载登录表单来处理程序中的“注销”。

编辑:从评论中,它可能是你正在寻找的是.Hide()。这不会导致您的表单卸载,并且调用.Show()会将其恢复(例如,您可以使用定时器或其他形式持有对主窗体的引用来进行调用)。我更喜欢使用ApplicationContext,因为它负责将程序保存在远离用户可能尝试关闭的UI元素的内存中。

+0

我不明白!我不知道c#中的上下文!请你换一种方式? –

+0

这不是复杂的事情吗?在登录窗口的例子中,您甚至可以在初始化组件之前打开对话框,甚至在初始化组件之前等等。我真的认为他所要查找的只是'Hide()',但我很想听听为什么这是不够的。 – SimpleVar

+0

上下文只是用于管理项目表单的包装器。如果您的项目默认类调用它,您可以启动任何表单或从那里运行任何后台进程。请参阅:http://www.c-sharpcorner。com/UploadFile/johnconwell/ApplicationContexttoEncapsulateSplashScreenFunctionality11232005041406AM/ApplicationContexttoEncapsulateSplashScreenFunctionality.aspx为其使用的示例。 – Godeke

2

您可以使用隐藏方法。

尝试这样做:

frmMain fm = new frmMain(); 
this.Hide(); 
fm.Show(); 

或者:

frmMain fm = new frmMain(); 
this.Hide(); 
fm.ShowDialog(); 
this.Show(); 

后者将打开的窗口,一旦被关闭,之前的窗口将再次出现。

+0

谢谢你这个完美的工作,就像其他答案一样简单。谢谢! –

2

我所做的来解决这个问题是:

this.Hide() 

大概没有做到这一点的最好办法,但依然。

你甚至可以把它找回来通过调用

this.Show() 
相关问题