首页 新闻 会员 周边

C# winform 不通过窗体的ShowInTaskbar属性,怎么实现窗体不在任务栏显示?

0
悬赏园豆:20 [待解决问题]

我不想通过窗体的ShowInTaskbar属性来设置窗体启动时在任务栏隐藏,请问有其他方法可以实现窗体不在任务栏显示吗?请各位专家帮帮小弟,最好有代码能让小弟参考下,先谢谢各位喽!!

seclipse的主页 seclipse | 初学一级 | 园豆:180
提问于:2010-11-15 14:00
< >
分享
所有回答(3)
0

用ShowInTaskBar 属性,有什么问题?

沉默的糕点 | 园豆:1786 (小虾三级) | 2010-11-15 14:45
使用属性ShowInTaskbar=false时,点击窗体最小化按钮后,虽然窗体在任务栏不在显示,但窗体会最小化到电脑桌面的左下角,而不是隐藏掉。如果不使用ShowInTaskbar属性,窗体会隐藏掉,但任务栏会有显示,请问有其它办法实现窗体不在任务栏显示吗?
支持(0) 反对(0) seclipse | 园豆:180 (初学一级) | 2010-11-15 14:49
估计你是做 Splash form吧。 可以这样做的。 默认 mainForm.Opacity = 0,SpalashForm 设定ShowInTaskBar= false, 在 Main(params string[] args) 启动流程如下: 1) 用一个Thread 启动 Splashform, Thread 里面做的是,把splashForm的实例 赋值给一个成员变量static _splashform , 并 且Application.Run(_spalshFrom)。大概如下 private static void ShowSpliashForm() { ThreadStart s = delegate { _splashform = new SplashForm(); Application.Run(_splashform); }; var thread = new Thread(s); thread.SetApartmentState(ApartmentState.STA); thread.Start(); while (_splashform == null) { Thread.Sleep(100); //直到保证_splashform启动成功才退出,否则会报异常。 } } 2)开始初始化程序,并且通过_splashform显示信息,记得要用splash.Invoke,因为Thread不同。 3) 初始化完成后,new Mainform,并且把 mainForm.Opacity = 100; 代码大概如下 mainform=new Mainform(); _splashform.Invoke(new Action<SplashForm>(delegate(SplashForm state) { state.Close(); state.Dispose(); mainForm.Show(); mainForm.Activate(); mainForm.Focus(); }), _splashform); Application.Run(mainForm);
支持(0) 反对(0) 沉默的糕点 | 园豆:1786 (小虾三级) | 2010-11-15 15:11
sorry ,排版实在。。。。。。
支持(0) 反对(0) 沉默的糕点 | 园豆:1786 (小虾三级) | 2010-11-15 15:12
“沉默的糕点”谢谢你的回答,其实我想做QQ点击最小化后隐藏窗体,在双击状态栏图标显示窗体,我在设置ShowInTaskbar=false后启动程序,上述功能都可以实现,但由于将ShowInTaskbar=false的原因,窗体隐藏后双击状态栏图标时,窗体总会在屏幕左下角闪一下才显示出来,如果设置ShowInTaskbar=true则不会出现这样的情况,所以这个问题不知道有没有其它方法可以解决。
支持(0) 反对(0) seclipse | 园豆:180 (初学一级) | 2010-11-15 15:43
我用NotfyIcon,但是没有发现你所说的问题。我用默认ShowInTaskBar=true,当最小化的时候,TaskBar是看不到Form的。 你有没有加入这个事件呢? private void Form1_Resize(object sender, EventArgs e) { if (FormWindowState.Minimized == WindowState) Hide(); }
支持(0) 反对(0) 沉默的糕点 | 园豆:1786 (小虾三级) | 2010-11-15 16:18
嗯是的,ShowInTaskBar=true时候是不会出现我说的这个问题,但是如果是ShowInTaskBar=false就会出现这个问题了,因为我想让程序启动时候就不要在任务栏显示,所以我用ShowInTaskBar=false,窗体隐藏后双击NotfyIcon就出现窗体在屏幕左下角闪一下才显示出来这个情况。
支持(0) 反对(0) seclipse | 园豆:180 (初学一级) | 2010-11-15 16:43
你的意思是TaskBar永远不显示程序,无论他是否在左下方的TrayBar,
支持(0) 反对(0) 沉默的糕点 | 园豆:1786 (小虾三级) | 2010-11-15 16:48
嗯是的,从开始启动程序时,任务栏就不要显示的
支持(0) 反对(0) seclipse | 园豆:180 (初学一级) | 2010-11-15 17:26
我无论用ShowInTaskBar=false 或者ShowInTaskBar=true,都会有右下角弹出的动画。不知道你是不是xp,是否开了窗口特效呢?
支持(0) 反对(0) 沉默的糕点 | 园豆:1786 (小虾三级) | 2010-11-19 09:30
0

只要你的窗口是隐藏状态(通过ShowWindow),就不会在任务栏显示按钮。

如果你的窗口是显示状态,则满足以下条件时,不会在任务栏显示一个按钮:

(1)窗口有一个Owner。(即不是属于桌面的顶层窗口)

或者

(2)窗口样式中指定了 TOOLWINDOW。

hoodlum1980 | 园豆:559 (小虾三级) | 2010-11-15 17:21
嗯,我已经做了窗口是隐藏状态,但是在双击状态栏图标显示窗体的时候,总是先在屏幕左下角闪一下才显示出来窗体,而不是直接显示出来窗体。
支持(0) 反对(0) seclipse | 园豆:180 (初学一级) | 2010-11-15 17:37

@seclipse: 点击最小化按钮时,不让窗体最小化,直接隐藏窗体。

支持(0) 反对(0) aazdf | 园豆:110 (初学一级) | 2014-11-06 19:46
0

点击最小化按钮时,不让窗体最小化,直接隐藏窗体。

aazdf | 园豆:110 (初学一级) | 2014-11-06 19:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册