一、窗体最大化时要屏蔽住任务栏:
①选中窗体设置属性FormBorderStyle为none,运行时没有标题栏不能最大化最小化不能关闭 一般不用
②FormBorderStyle为FixedToolWindow或SizableToolWindow 此时程序运行时可以最大最小化 关闭 最大化时能
全屏,覆盖任务栏。
③设置窗体边框的FormBorderStyle属性设置。属性值可以通过枚举类型FormBorderStyle获取,它的取值和意义如下表所示。
属性 | 值 | 意义 |
FormBorderStyle.None | 0 | 无边框 |
FormBorderStyle.FixedSingle | 1 | 固定的单行边框 |
FormBorderStyle.Fixed3D | 2 | 固定的三维样式边框 |
FormBorderStyle.FixedDialog | 3 | 固定的对话框样式的粗边框 |
FormBorderStyle.Sizable | 4 | 可调整大小的边框 |
FormBorderStyle.FixedToolWindow | 5 | 不可调整大小的工具窗口边框 |
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