我正在开发一个在后台运行的无边框窗体的托盘应用程序。 如果用户想要执行不同的操作,可以通过右键单击托盘图标(NotifyIcon)打开上下文菜单。
所以我的要求是:
1.应用程序始终以最小化模式启动,并显示trayicon 2.应用程序不应出现在任务栏中 3.从ALT + TAB菜单中看不到应用程序。
我已经实现了以上两个要求但是在尝试从ALT + Tab菜单中隐藏应用程序时它正在工作(从ALT + TAB看不到),但它创建了一个带有应用程序标题的小边窗口,位于任务栏顶部的左侧角落如下图所示:
我想删除那个小边窗口。
这是我的代码:
public Form1()
{
InitializeComponent();
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
HideThisForm();
}
protected override CreateParams CreateParams
{
get
{
// Turn on WS_EX_TOOLWINDOW style bit
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x80;
return cp;
}
}
private void HideThisForm()
{
this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized;
this.Hide();
notifyApp.Visible = true;
notifyApp.ShowBalloonTip(2000, "BackgroundApp",
"This APP is running @ Background", ToolTipIcon.Info);
}
P.S:我在StackOverflow中经历过几篇类似的帖子,但没有一个面临类似的问题。
答案 0 :(得分:2)
我在使用this.Opacity=0;
之前完成了这项工作。有点hackish,但使用WinForms,它可能是唯一的方法。
答案 1 :(得分:0)
如果你有一个无边框形式,即FormBorderStyle.None,则ShowInTaskbar = False不起作用。因此,除了Me.ShowInTaskbar = False之外,我们还应该将WS_EX_TOOLWINDOW设置为true。
这不是来自我,而是来自这个:http://www.codeproject.com/Tips/135076/Hiding-the-form-from-alt-tab-menu
当表单变得可见时,你总是可以尝试将bordertyle设置为你想要的东西(当你失去焦点时将它转回来)