Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从ALT+隐藏无边框窗口;选项卡菜单_C#_.net_Winforms - Fatal编程技术网

C# 从ALT+隐藏无边框窗口;选项卡菜单

C# 从ALT+隐藏无边框窗口;选项卡菜单,c#,.net,winforms,C#,.net,Winforms,我正在开发一个托盘应用程序,它在后台运行。 如果用户想要执行不同的操作,他们可以通过右键单击托盘图标(NotifyIcon)打开上下文菜单 因此,我的要求是: 1.应用程序始终以最小化模式启动,并将显示trayicon。 2.应用程序不应出现在任务栏上。 3.应用程序不应在ALT+TAB菜单中可见 我已经实现了以上两个要求,但在试图从ALT+Tab菜单隐藏应用程序时,它正在工作(从ALT+Tab中看不到),但它正在创建一个边缘较小的窗口,应用程序标题位于任务栏顶部的左侧角,如下图所示: 我想把

我正在开发一个托盘应用程序,它在后台运行。 如果用户想要执行不同的操作,他们可以通过右键单击托盘图标(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);
    }

注:我在StackOverflow中看过一些类似的帖子,但没有一篇面临类似的问题。

如果你有一个无边框的表单,即FormBorderStyle。没有,那么ShowInTaskbar=False不起作用。因此,除了Me.ShowInTaskbar=False之外,我们还应该将WS_EX_TOOLWINDOW设置为true

这不是我说的,而是这个:


当窗体变得可见时,您可以尝试将边框样式设置为所需的样式(当您松开焦点时,可以将其转回)

在使用
this.Opacity=0之前,我已经完成了此操作。有点像黑客,但是使用WinForms,这可能是唯一的方法。

谢谢你的回答,我正在通过使用
0x80
cp.ExStyle
进行ORing来打开
WS\u EX\u工具窗口。我尝试了你的第二个建议,但仍然是创建边缘窗口。是的,通过设置
this.Opacity=0将使边缘窗口不可见,但我应该在何时更改不透明度以使其可见。@Sudhakardipudi--我的印象是,您从来都不需要查看表单,您只需要一个托盘菜单。有效点,但作为上下文菜单选项之一,我必须打开窗口。我认为通过更改不透明度(设置为100)在contextmenuitem\u中,单击事件解决了问题,让我试试。谢谢