版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 ISO 14880-2:2024 EN Optics and photonics - Microlens arrays - Part 2: Test methods for wavefront aberrations
- DB12T 578-2015 液化氣體汽車罐車用緊急切斷閥檢驗方法與評定要求
- 新學期學習計劃范文匯編6篇
- 智能運輸系統(tǒng) 體系結構 服務 編制說明
- 全國連鎖洗衣店分布簡報 2024 -洗衣行業(yè)如何搶占商機 來看這份連鎖洗衣店選址布局
- 春節(jié)期間通信保障方案
- 雪房子課件教學課件
- 部編版歷史九年級上冊第六單元 第17課《君主立憲制的英國》說課稿
- 高壓電工作業(yè)題庫
- 寶安區(qū)重點中學七年級上學期語文期中考試試卷
- 犟龜-完整版獲獎課件
- 工業(yè)產品CAD技能三級試題及其評分標準
- 多元統(tǒng)計分析習題及解答
- 漢語詞性專題練習(附答案)
- 勞動合同-高管補充協(xié)議20110520
- 浙江省溫州市地圖矢量PPT模板(圖文)
- 上海市建設工程項目管理機構管理人員情況表
- 北師大版二年級數學上冊第九單元《除法》知識點梳理復習ppt
- 空氣能室外機保養(yǎng)維護記錄表
- DB37∕T 5162-2020 裝配式混凝土結構鋼筋套筒灌漿連接應用技術規(guī)程
- 9-2 《第三方過程評估淋蓄水檢查內容》(指引)
評論
0/150
提交評論