C# winform 程序运行时任务栏显示 隐藏问题;调用可执行程序任务栏问题

本文围绕C# WinForm开发中任务栏处理展开。介绍了窗体最大化时屏蔽任务栏的属性设置,如FormBorderStyle和WindowsState;探讨了全屏下打开外部程序时隐藏任务栏的代码实现,涉及ShowWindow和FindWindow函数;还给出了最漂亮的解决方法,即设置TopMost=true,最后提及自动隐藏任务栏问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、窗体最大化时要屏蔽住任务栏:

①选中窗体设置属性FormBorderStyle为none,运行时没有标题栏不能最大化最小化不能关闭 一般不用

②FormBorderStyle为FixedToolWindow或SizableToolWindow 此时程序运行时可以最大最小化 关闭 最大化时能

全屏,覆盖任务栏

③设置窗体边框的FormBorderStyle属性设置。属性值可以通过枚举类型FormBorderStyle获取,它的取值和意义如下表所示。

属性意义
FormBorderStyle.None0无边框
FormBorderStyle.FixedSingle1固定的单行边框
FormBorderStyle.Fixed3D2固定的三维样式边框
FormBorderStyle.FixedDialog3固定的对话框样式的粗边框
FormBorderStyle.Sizable4可调整大小的边框
FormBorderStyle.FixedToolWindow5不可调整大小的工具窗口边框

FormBorderStyle.SizableToolWindow

6可调整大小的工具窗口边框

 ④可以通过WindowsState设置最初窗体运行时最大最小框的状态,StartPostion:CenterScreen设置窗体刚开始时处于屏幕中央。

二、软件全屏的情况下(此时不显示任务栏)打开C#编写的外部可执行程序.exe,会显示任务栏,此时外部执行程序位于全屏上方显示任务栏感觉不舒服,嗯要干掉,首先我百度了一个解决方案就是通过代码引用操作系统user32.dll把任务栏隐藏,这样调出就不会显示任务栏,但是 关掉程序之后如果不打开任务栏那想用任务栏时找不到。。。。。。。嗯。。。还是要在程序关闭时显示任务栏。。。但是这样的话。。。任务栏会在全屏软件上显示出。。。点一下全屏软件的任何一个地方。。。让全屏软件获取焦点后才能不显示任务栏。。。。。视觉不舒服。。。换。。。

代码如下:

首先引用命名控件System.Runtime.InteropServices。

代码如下:

//主方法内   
private const int SW_HIDE = 0;  //隐藏任务栏
private const int SW_RESTORE = 9;//显示任务栏

[DllImport("user32.dll")]
public static extern int ShowWindow(int hwnd,int nCmdShow);
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName,string lpWindowName);

//两个btn事件下
private void button1_Click(object sender, EventArgs e)
{
  ShowWindow(FindWindow("Shell_TrayWnd",null),SW_HIDE);
}
private void button2_Click(object sender, EventArgs e
{
ShowWindow(FindWindow("Shell_TrayWnd",null),SW_RESTORE);
}

解释:

①:API函数ShowWindow()能够控制人和窗体的现实状态,其声明格式如下:

导入库  [DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)]

函数原型 static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow);

参数说明 IntPtr hWnd, hWnd指窗口句柄;uint nCmdShow,nCmdShow指定窗口如何显示的参数

返回值 布尔值

②:API函数FindWindow()可用于返回任务栏所在窗体类“Shell_TrayWnd”句柄,其声明格式如下:

导入库 [DllImport("user32.dll")]

函数原型 public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

参数说明 lpClassName String,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类

lpWindowName String,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收 任何窗口标题

返回值 :句柄

如果函数执行成功,则返回值是拥有指定窗口类名或窗口名的窗口的句柄。

如果函数执行失败,则返回值为 NULL 。可以通过调用GetLastError函数获得更加详细的错误信息。

 

三、最漂亮的解决方法:

因为我用的是winform,调用的是C#语言写的,在winform主窗体下设置属性TopMost=true就可以在调用时不显示任务栏了(前提是你之前的程序覆盖任务栏之上)

如果将窗体显示为最顶层窗体,则为 true;否则为 false。 默认值为 false

最顶层窗体是重叠的所有其他 (非最顶层) 窗体,即使它并不是活动或前景色形式。 最顶层窗体始终显示在桌面上的窗口在 z顺序的最高点。 此属性可用于创建应用程序,如查找和替换工具窗口中始终显示一个窗体。

 

四、C#程序设置自动隐藏任务栏问题 我找了找 发现不少  不过还没试 嗯mmmm先这样吧

https://blog.youkuaiyun.com/zxzzt119/article/details/73294674

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值