当我们再做第三类库时 用户对对我们的窗口需要通过快捷键的方式实现显示与隐藏。当我们的库被用于窗口应用程序时 我们可能通过创建窗体对象并注册快捷键 而不调用show方法 就能实现,但是但库被用于控制台程序进行启动时 问题就来了 因为控制台应用程序 没有消息循环机制 我们只能采用Application.run方法手动打开一个窗口,这样是不是就没有问题了呢 no,我们不应当直接打开开一个窗口 而是使用run方法的重载方法 运行一个上下文,具体代码如下:
internal class HideOnStartupApplicationContext : ApplicationContext
{
private Form mainFormInternal;// 构造函数,主窗体被存储在mainFormInternal
public HideOnStartupApplicationContext( Form mainForm)
{
this.mainFormInternal = mainForm;// 当主窗体被关闭时,退出应用程序
void mainFormInternal_Closed(object sender, EventArgs e )
{
Application.Exit();
}
}
//在Main中作如下修改:
HideOnStartupApplicationContext context = new HideOnStartupApplicationContext( newForm1());
Application.Run(context );//隐藏窗体的方法5/5: 推荐使用!!!
//在构造函数中或者直接设置form属性
this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized;