全屏切换的任务栏问题.docx

Winform中全屏显示问题 默认分类2009-11-12 11:47:14 阅读109评论0 字号:大中小 订阅 在C#的Winform中实现窗口全屏显示的代码非常简单,如下: this.FormBorderStyle = FormBorderStyle.N one; this.Wi ndowState = FormWi ndowState.Maximized; this.TopMost = true; // 这句无关紧要,可以不加 本来没什么可说的,但是一一 今天碰巧要实现一个用键盘快捷键来切换“ 全屏/窗口”的功能,发现只有第一 次按的时候正常实现全屏。 在点击按键切换成非 全屏后,再切回来时任务栏不消失。代码如下: if (this.FormBorderStyle == FormBorderStyle.N one) { this.FormBorderStyle = FormBorderStyle.FixedS in gle; } else { this.FormBorderStyle = FormBorderStyle.N one; this.Wi ndowState = FormWi ndowState.Maximized; } 第一次按的时候正常说明代码没有大的问题,, 第一次和后来的N次操作有什么区别呢? 突然想到第一次按的时候程序是以正常大小的窗口 显示的,而后续按键操作时因 程序语句的关系窗口一直是最大化的(无论 全屏与否)。 当即改成如下代码: if (this.FormBorderStyle == FormBorderStyle.N one) { this.FormBorderStyle = FormBorderStyle.FixedS in gle; this.Wi ndowState = FormWi ndowState.Normal; } else this.FormBorderStyle = FormBorderStyle.N one; this.Wi ndowState = FormWi ndowState.Maximized; OK 一切正常了。 但是为什么会出现这个问题呢?想了一下,觉得应该是这样: 在最初的代码中,从全屏切换成窗口时,此时窗口的 WindowState保留了最大化 的状态。 又因为此时不是 全屏,任务栏是要 显示的,所以此时显示的程序窗口大小不是 1024*768,而是 1024*(768-30)=1024*738 当再从最大化的窗口切回 全屏时,程序将FormBorderStyle设置成None后,执 行到“ this.Wi ndowState = FormWi ndowState.Maximized ” 这句时,因 为窗口状态已经是Maximized ,所以系统自动接受了此时窗口的大小,而问题 是此时的窗口大小并不是1024*768 ,所以就出现上面问题了。 在作 winform 程序时遇到窗口如果全屏时,遮盖任务栏的问题,从网上搜到如下解决办法,与各位 共享。以下代码本人都试过,没问题: 1. 执行如下按钮事件 private void btnFormMax_Click(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Maximized) { this.WindowState = FormWindowState.Normal; } else { this.WindowState = FormWindowState.Maximized; } } 窗体最大化时 非全屏 不会遮盖任务栏 此时 this.FormBorderStyle 默认为 Sizable 2. 执行如下按钮事件 private void btnFormMax_Click(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Maximized) { this.WindowState = FormWindowState.Normal; } else { this.FormBorderStyle = FormBorderStyle.None; this.WindowState = FormWindowState.Maximized; 窗体最大化时 会全屏 及遮盖任务栏 此时 this.FormBorderStyle 为 None 不会显示窗体标题栏等相关 3. 执行如下按钮事件 private void btnFormMax_Click(object sender, EventArgs e) { if (this.WindowStat

文档评论(0)

1亿VIP精品文档

相关文档