我有一个需要全屏运行的.net Windows应用程序。当应用程序启动时,任务栏显示在主窗体的顶部,只有在通过单击或使用ALT-TAB激活窗体时它才会消失。表单的当前属性如下:
我尝试在表单加载中添加以下内容,但没有一个对我有用:
有没有办法在.NET中执行此操作,或者我是否必须调用本机Windows方法,如果是这样,我们非常感谢代码片段。
非常感谢答案 0 :(得分:90)
使用:
FormBorderStyle = FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
然后将表单放在任务栏上。
答案 1 :(得分:45)
我已经尝试了很多解决方案,其中一些解决方案适用于Windows XP,并且所有这些解决方案都无法在Windows 7上运行。毕竟我写了一个简单的方法。
private void GoFullscreen(bool fullscreen)
{
if (fullscreen)
{
this.WindowState = FormWindowState.Normal;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Bounds = Screen.PrimaryScreen.Bounds;
}
else
{
this.WindowState = FormWindowState.Maximized;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
}
}
代码的顺序很重要,如果你改变WindwosState和FormBorderStyle的位置,它将不起作用。
此方法的一个优点是使TOPMOST处于false状态,允许其他表单覆盖主窗体。
它绝对解决了我的问题。
答案 2 :(得分:14)
这就是我全屏制作表格的方法。
private void button1_Click(object sender, EventArgs e)
{
int minx, miny, maxx, maxy;
inx = miny = int.MaxValue;
maxx = maxy = int.MinValue;
foreach (Screen screen in Screen.AllScreens)
{
var bounds = screen.Bounds;
minx = Math.Min(minx, bounds.X);
miny = Math.Min(miny, bounds.Y);
maxx = Math.Max(maxx, bounds.Right);
maxy = Math.Max(maxy, bounds.Bottom);
}
Form3 fs = new Form3();
fs.Activate();
Rectangle tempRect = new Rectangle(1, 0, maxx, maxy);
this.DesktopBounds = tempRect;
}
答案 3 :(得分:12)
我的简单修复结果是调用了表单的Activate()
方法,所以不需要使用TopMost
(这就是我的目标)。
答案 4 :(得分:5)
FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
答案 5 :(得分:4)
我一直在SO和其他一些网站寻找这个问题的答案,但是一个答案对我来说非常复杂,而其他一些答案根本无法正常工作,所以经过大量的代码测试我解决了这个难题。
注意:我正在使用 Windows 8 ,我的任务栏未处于自动隐藏模式。
我发现在执行任何修改之前将WindowState设置为Normal将使用未覆盖的任务栏停止错误。
我创建了这个有两种方法的类,第一种进入“全屏模式”,第二种进入“全屏模式”。因此,您只需要创建此类的对象,并将要设置为全屏的Form作为参数传递给EnterFullScreenMode方法或LeaveFullScreenMode方法:
class FullScreen
{
public void EnterFullScreenMode(Form targetForm)
{
targetForm.WindowState = FormWindowState.Normal;
targetForm.FormBorderStyle = FormBorderStyle.None;
targetForm.WindowState = FormWindowState.Maximized;
}
public void LeaveFullScreenMode(Form targetForm)
{
targetForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
targetForm.WindowState = FormWindowState.Normal;
}
}
private void fullScreenToolStripMenuItem_Click(object sender, EventArgs e)
{
FullScreen fullScreen = new FullScreen();
if (fullScreenMode == FullScreenMode.No) // FullScreenMode is an enum
{
fullScreen.EnterFullScreenMode(this);
fullScreenMode = FullScreenMode.Yes;
}
else
{
fullScreen.LeaveFullScreenMode(this);
fullScreenMode = FullScreenMode.No;
}
}
我已经在另一个问题上提出了相同的答案,我不确定这个问题是否重复。 (链接到另一个问题:How do I make a WinForms app go Full Screen)
答案 6 :(得分:2)
我相信可以通过简单地将FormBorderStyle属性设置为None并将WindowState设置为Maximized来完成。如果您使用的是Visual Studio,则可以在IDE中找到这两者,因此无需以编程方式执行此操作。确保在执行此操作之前包含一些关闭/退出程序的方法,这将删除右上角的那么有用的X.
编辑:
试试这个。这是我保存了很长时间的片段。我甚至不记得是谁应该归功于它,但它确实有效。
/*
* A function to put a System.Windows.Forms.Form in fullscreen mode
* Author: Danny Battison
* Contact: gabehabe@googlemail.com
*/
// a struct containing important information about the state to restore to
struct clientRect
{
public Point location;
public int width;
public int height;
};
// this should be in the scope your class
clientRect restore;
bool fullscreen = false;
/// <summary>
/// Makes the form either fullscreen, or restores it to it's original size/location
/// </summary>
void Fullscreen()
{
if (fullscreen == false)
{
this.restore.location = this.Location;
this.restore.width = this.Width;
this.restore.height = this.Height;
this.TopMost = true;
this.Location = new Point(0,0);
this.FormBorderStyle = FormBorderStyle.None;
this.Width = Screen.PrimaryScreen.Bounds.Width;
this.Height = Screen.PrimaryScreen.Bounds.Height;
}
else
{
this.TopMost = false;
this.Location = this.restore.location;
this.Width = this.restore.width;
this.Height = this.restore.height;
// these are the two variables you may wish to change, depending
// on the design of your form (WindowState and FormBorderStyle)
this.WindowState = FormWindowState.Normal;
this.FormBorderStyle = FormBorderStyle.Sizable;
}
}
答案 7 :(得分:0)
我没有解释它是如何运作的,但有效,而且是牛仔编码器就是我所需要的一切。
System.Drawing.Rectangle rect = Screen.GetWorkingArea(this);
this.MaximizedBounds = Screen.GetWorkingArea(this);
this.WindowState = FormWindowState.Maximized;
答案 8 :(得分:-4)
FormBorderStyle = FormBorderStyle.Sizable;
TopMost = false;
WindowState = FormWindowState.Normal;
这个代码让你的窗户全屏,这也将覆盖整个屏幕