c# 窗口API,以及全屏鎖定一些tips

this.WindowState = FormWindowState.Maximized;
this.FormBorderStyle = FormBorderStyle.None; 

/*
FormBorderStyle.FixedSingle
FormBorderStyle.Fixed3D
FormBorderStyle.FixedDialog
FormBorderStyle.Sizable
FormBorderStyle.FixedToolWindow
FormBorderStyle.SizableToolWindow
*/


窗口在非FormBorderStyle.None 的狀態,窗口的標題欄 能夠被雙擊,或者拖拽, 致使窗口被縮小。

若是想實現 沒法退出的全屏,就應該用FormBorderStyle.None。
還須要處理鍵盤事件!
1.tapstop 也Disable, 防止有人tab ===> Enter(順序也最好整理下)
2.Dle + Alt + Ctrl
3.Alt + Tab
4.Alt + F4
5.最下的任務欄,能夠隱藏 窗口Form1的【屬性】= >【ShowInTaskbar】 設置【False】 (這樣,鍵盤Alt+ Tab事件,就沒法用鼠標右鍵關閉 )
6.任務管理器沒法控制, 只能win10設置【隱藏任務欄】
7.屏蔽 【Win 鍵】
    -  Win+R  運行在環境變量的程序(也能夠指定目錄)
    -  Win+Q  運行Win10菜單欄,能夠搜索和運行 全部軟件
    -  等等

Tips:若是不用鍵盤,其實好辦。






Console.WriteLine("主顯示器完整尺寸:");
Console.WriteLine("寬:" + Screen.PrimaryScreen.Bounds.Width); 
Console.WriteLine("高:" + Screen.PrimaryScreen.Bounds.Height); 

Console.WriteLine("主顯示器工做尺寸(排除任務欄、工具欄):"); 
Console.WriteLine("寬:" + Screen.PrimaryScreen.WorkingArea.Width); 
Console.WriteLine("高:" + Screen.PrimaryScreen.WorkingArea.Height); 

Console.WriteLine("當前顯示器完整尺寸:"); 
Console.WriteLine("寬:" + Screen.GetBounds(this).Width);
Console.WriteLine("高:" + Screen.GetBounds(this).Height);


Console.WriteLine("當前顯示器工做尺寸(排除任務欄、工具欄):"); 
Console.WriteLine("寬:" + Screen.GetWorkingArea(this).Width);
Console.WriteLine("高:" + Screen.GetWorkingArea(this).Height);
this.SuspendLayout();
if (m_IsFullScreen)//全屏 
 {
    this.WindowState = FormWindowState.Maximized; 
    this.FormBorderStyle = FormBorderStyle.None;
}
 else//還原 TODO:還原後的窗體應該與全屏前的大小一致
{
     this.WindowState = FormWindowState.Normal;
     this.FormBorderStyle = FormBorderStyle.Sizable;
 }
this.ResumeLayout(false);



## 掛起佈局邏輯與恢復佈局邏輯


    有時候,須要從新佈置整個窗口裏的控件的位置佈局,如剛剛初始化時就是一個例子。這樣在每增長一個有dock等屬性的控件時,因爲這些佈局都是相對性佈局,都須要從新計算位置什麼的,並實際執行佈局。若是一個窗口上有50個控件,這個佈局處理就要執行50次,並觸發50 * n次的佈局有關的事件。【n】

而實際上,在定義佈局方案過程當中,這些佈局是沒有必要每一個控件定義以後就當即執行佈局的,也沒有必要處理所以發出的佈局事件。

 

    更合理的辦法,是在所有定義完全部控件的佈局方案以後,才一次性計算佈局結果,並一次執行。

 

    因而,就設計了這兩個函數。第一個函數用於暫停實際的佈局,而第二個函數用於恢復實際佈局。

    在程序裏,若是你須要大規模調整佈局方案時,就能夠先調用suspendlayout,暫停佈局執行,而後定義誰在前,誰在後,誰在上,誰在下,誰填充左,誰填充右。

    佈置完畢。resumelayout,因而,一次性處理完畢。

 

###   若是註釋這兩個方法的調用,效果上也不會有什麼變化,只是在性能上會形成沒必要要的開銷。 
###   若是沒有太多控件的計算處理,則意義不大!


--------------------- 
做者:霜之詠歎調 
來源:CSDN 
原文:https://blog.csdn.net/chuck_lu/article/details/17391999 
版權聲明:本文爲博主原創文章,轉載請附上博文連接!
相關文章
相關標籤/搜索