全屏切換的任務欄問題_第1頁
全屏切換的任務欄問題_第2頁
全屏切換的任務欄問題_第3頁
全屏切換的任務欄問題_第4頁
全屏切換的任務欄問題_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Winform中全屏顯示問題默認分類2009-11-12 11:47:14 閱讀109評論0 字號:大中小 訂閱在C#的Winform中實現(xiàn)窗口全屏顯示的代碼非常簡單,如下:this.FormBorderStyle = FormBorderStyle.N one;this.Wi ndowState = FormWi ndowState.Maximized;this.TopMost = true; /這句無關緊要,可以不加本來沒什么可說的,但是一一今天碰巧要實現(xiàn)一個用鍵盤快捷鍵來切換“全屏/窗口”的功能,發(fā)現(xiàn)只有第一次按的時候正常實現(xiàn)全屏。在點擊按鍵切換成非 全屏后,再切回來時任務欄不消失。代碼

2、如下:if (this.FormBorderStyle = FormBorderStyle.N one)this.FormBorderStyle = FormBorderStyle.FixedS in gle;elsethis.FormBorderStyle = FormBorderStyle.N one;this.Wi ndowState = FormWi ndowState.Maximized;第一次按的時候正常說明代碼沒有大的問題,第一次和后來的N次操作有什么區(qū)別呢?突然想到第一次按的時候程序是以正常大小的窗口 顯示的,而后續(xù)按鍵操作時因 程序語句的關系窗口一直是最大化的(無論 全屏與否

3、)。當即改成如下代碼:if (this.FormBorderStyle = FormBorderStyle.N one)this.FormBorderStyle = FormBorderStyle.FixedS in gle; this.Wi ndowState = FormWi ndowState.Normal;elsethis.FormBorderStyle = FormBorderStyle.N one; this.Wi ndowState = FormWi ndowState.Maximized;OK 一切正常了。但是為什么會出現(xiàn)這個問題呢?想了一下,覺得應該是這樣:在最初的代碼中,從

4、全屏切換成窗口時,此時窗口的 WindowState保留了最大化 的狀態(tài)。又因為此時不是 全屏,任務欄是要 顯示的,所以此時顯示的程序窗口大小不是 1024*768,而是 1024*(768-30)=1024*738當再從最大化的窗口切回 全屏時,程序將FormBorderStyle設置成None后,執(zhí) 行到“ this.Wi ndowState = FormWi ndowState.Maximized” 這句時,因為窗口狀態(tài)已經是Maximized ,所以系統(tǒng)自動接受了此時窗口的大小,而問題 是此時的窗口大小并不是1024*768 ,所以就出現(xiàn)上面問題了。在作 winform 程序時遇到窗口

5、如果全屏時,遮蓋任務欄的問題,從網上搜到如下解決辦法,與各位共享。以下代碼本人都試過,沒問題:1.執(zhí)行如下按鈕事件private void btnFormMax_Click(object sender, EventArgs e)if (this.WindowState = FormWindowState.Maximized)this.WindowState = FormWindowState.Normal;elsethis.WindowState = FormWindowState.Maximized;窗體最大化時 非全屏 不會遮蓋任務欄此時 this.FormBorderStyle 默認為

6、Sizable2.執(zhí)行如下按鈕事件private void btnFormMax_Click(object sender, EventArgs e)if (this.WindowState = FormWindowState.Maximized)this.WindowState = FormWindowState.Normal;elsethis.FormBorderStyle = FormBorderStyle.None;this.WindowState = FormWindowState.Maximized;窗體最大化時 會全屏 及遮蓋任務欄此時 this.FormBorderStyle 為

7、 None 不會顯示窗體標題欄等相關3.執(zhí)行如下按鈕事件private void btnFormMax_Click(object sender, EventArgs e)if (this.WindowState = FormWindowState.Maximized)this.WindowState = FormWindowState.Normal;elsethis.FormBorderStyle = FormBorderStyle.None;this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width,Screen.Pr

8、imaryScreen.WorkingArea.Height);this.WindowState = FormWindowState.Maximized;窗體最大化時 非全屏 不會遮蓋任務欄此時 this.FormBorderStyle 為 None 不會顯示窗體標題欄等相關。轉 窗體最大化的時候,如何指定窗體的位置、大小(C#)/adandelion/archive/2008/04/03/1136198.htmlusing System;using System.Collections.Generic;using System.ComponentMo

9、del;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApplication1public partial class FormRegion : Formprivate const long WM_GETMINMAXINFO = 0x24;public struct POINTAPIpublic int x;public int y;public struct MINMAXINFOpublic POINTAPI ptReserved;pub

10、lic POINTAPI ptMaxSize;public POINTAPI ptMaxPosition;public POINTAPI ptMinTrackSize;public POINTAPI ptMaxTrackSize;public FormRegion()InitializeComponent();this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width,Screen.PrimaryScreen.WorkingArea.Height);protected override void WndProc(ref

11、System.Windows.Forms.Message m)base.WndProc(ref m);if (m.Msg = WM_GETMINMAXINFO)MINMAXINFO mmi = (MINMAXINFO)m.GetLParam(typeof(MINMAXINFO);mmi.ptMinTrackSize.x = this.MinimumSize.Width;mmi.ptMinTrackSize.y = this.MinimumSize.Height;if (this.MaximumSize.Width != 0 | this.MaximumSize.Height != 0)mmi.

12、ptMaxTrackSize.x = this.MaximumSize.Width;mmi.ptMaxTrackSize.y = this.MaximumSize.Height;mmi.ptMaxPosition.x = 1;mmi.ptMaxPosition.y = 1;System.Runtime.lnteropServices.Marshal.StructureToPtr(mmi, m. LParam, true);轉c# winform獲取標題欄狀態(tài)欄菜單欄的高度/blog/237640MessageBox.Show(” 當前窗體

13、標題欄高度 +(this.Height - this.ClientRectangle.Height).ToString();獲得當前窗體標題欄高度ClientRectangle/獲取表示控件的工作區(qū)的矩形MessageBox.Show(Systemlnformation.PrimaryMonitorSize.ToString(); /獲取主顯示器屏幕的尺寸(像素)獲取主顯示器當前當前視頻模式的尺寸(以象素為單位)MessageBox.Show(” 菜單欄高度+Systemlnformation.MenuHeight.ToString(); / 獲取標準菜單欄的高度MessageBox.Show

14、(” 標題欄高度+SystemInformation.CaptionHeight.ToString(); /獲取標準標題欄的高度MenuHeight/獲取一個菜單行的高度(以象素為單位)CaptionHeight/獲取窗口的標準標題欄區(qū)域的高度(以象素為單位)1.執(zhí)行如下按鈕事件private void btnFormMax_Click(object sender, EventArgs e)if (this.WindowState = FormWindowState.Maximized)this.WindowState = FormWindowState.Normal;elsethis.Win

15、dowState = FormWindowState.Maximized;窗體最大化時 非全屏 不會遮蓋任務欄此時 this.FormBorderStyle 默認為 Sizable2.執(zhí)行如下按鈕事件private void btnFormMax_Click(object sender, EventArgs e)if (this.WindowState = FormWindowState.Maximized)elsethis.FormBorderStyle = FormBorderStyle.N one;this.Wi ndowState = FormWi ndowState.Maximized;窗體最大化時會全屏及遮蓋任務欄此時this.FormBorderStyle為None不會顯示窗體標題欄等相關3.執(zhí)行如下按鈕事件private void btnFo rmMax_Click(object sen der, Eve ntArgs e)if (this.Wi ndowState = FormWi ndowState.Maximized)this.Wi ndowState = FormWi ndowState.Normal;elsethis.FormBor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論