国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - WPF中窗體最大化問題的解決方法

WPF中窗體最大化問題的解決方法

2022-03-02 14:18奇葩史 C#

這篇文章主要給大家介紹了關于WPF中窗體最大化問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用wpf具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

在創建WPF應用的時候,你第一個看到的就是窗體類。它作為窗體的基礎,提供標準的邊框、工具條、最大化、最小化和關閉按鈕。WPF窗體是XAML文件和后臺代碼文件的混合體。

本文將詳細介紹關于WPF窗體最大化問題的相關內容,下面話不多說了,來一起看看詳細的介紹吧

遇到的問題信息

問題:當WindowStyle=None時,窗口最大化,不顯示任務欄 —— 即窗體是全屏效果。

解決中遇到的問題列表【主要涉及到任務欄發生改變后的一些問題處理】:

  • 最大化時,任務欄被遮蓋;
  • 最大化后,拖動任務欄,無法自適應窗體;
  • 最大化后,拖動任務欄,窗體還原,還原數據丟失,始終顯示最大;
  • 最大化后,拖動任務欄,窗體還原,設置之前保存的窗體位置數據,再次設置,由于和之前一樣,窗體位置信息不生效;

解決方案

思路:窗體最大化時,將窗體透明化,設置內部元素Grid的Margin屬性,從而顯示出任務欄

步驟:

1、 設置窗體相關屬性:WindowStyle="None" AllowsTransparency="True" Background="Transparent" ResizeMode="CanMinimize"

窗體需要支持透明,并將窗體設置為透明;設置ResizeMode,否則最大化時,邊框會有影響。

2、 添加窗體最大化/還原代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
double normaltop;
double normalleft;
double normalwidth;
double normalheight;
/// <summary>
/// 最大化/還原處理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Btn_maximize_Click(object sender, RoutedEventArgs e)
{
 //wpf最大化 全屏顯示任務欄處理
 if (this.WindowState == WindowState.Normal)
 {
 normaltop = this.Top;
 normalleft = this.Left;
 normalwidth = this.Width;
 normalheight = this.Height;
 
 double top = SystemParameters.WorkArea.Top;
 double left = SystemParameters.WorkArea.Left;
 double right = SystemParameters.PrimaryScreenWidth - SystemParameters.WorkArea.Right;
 double bottom = SystemParameters.PrimaryScreenHeight - SystemParameters.WorkArea.Bottom;
 gd_main.Margin = new Thickness(left, top, right, bottom);
 
 this.WindowState = WindowState.Maximized;
 }
 else
 {
 this.WindowState = WindowState.Normal;
 
 //必須先設置為0,在重新設值,若前后值一樣,會失效 --拖動任務欄后,還原-始終顯示在屏幕最左上方
 this.Top = 0;
 this.Left = 0;
 this.Width = 0;
 this.Height = 0;
 
 this.Top = normaltop;
 this.Left = normalleft;
 this.Width = normalwidth;
 this.Height = normalheight;
 
 gd_main.Margin = new Thickness(0);
 }
}

3、添加任務欄變化處理

注意:此節實現僅適用于.Net Framework 4.5及以上。因為4.0及以前的版本中不包含StaticPropertyChanged事件。
不過可以通過WndProc來自己實現,其中會有一個問題:利用WndProc來監聽,結果是比較實時的,而SystemParameters中的值,實時性可能會跟不上,從而獲取到的值仍然是舊的。

對此有兩種解決方案:

* 1、添加一個Timer 或者 直接Sleep,等待一下在SystemParameters的值【此法相對簡單,但無法完全保證有效,畢竟SystemParameters中值更新的時間,還是要看.Net Framework】;

* 2、利用Windows API讀取系統值,用方法SystemParametersInfo獲取SPI_GETWORKAREA【微軟官方其實就是用這個獲取的,這樣比我下面的運行效率還要高些】

另外:下面的方法可能會有系統兼容性問題,我在Windows 10上是通過的,但在Windows 8.1上,邊界存在問題【不確定是不是Framework在系統上有bug】

注冊事件:SystemParameters.StaticPropertyChanged += SystemParameters_StaticPropertyChanged;

添加如下代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void SystemParameters_StaticPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
 if (e.PropertyName == "WorkArea")
 {
 if (this.WindowState == WindowState.Maximized)
 {
  double top = SystemParameters.WorkArea.Top;
  double left = SystemParameters.WorkArea.Left;
  double right = SystemParameters.PrimaryScreenWidth - SystemParameters.WorkArea.Right;
  double bottom = SystemParameters.PrimaryScreenHeight - SystemParameters.WorkArea.Bottom;
  gd_main.Margin = new Thickness(left, top, right, bottom);
 }
 }
}

相關下載

點擊查看完整源代碼

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.shisujie.com/blog/wpf-maximize-taskbar-visible

延伸 · 閱讀

精彩推薦
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
主站蜘蛛池模板: 天天干天天操天天干 | 亚洲精品一区在线观看 | 成年人在线看 | 免费看国产视频 | 夜夜超碰 | 国产精品日韩欧美 | 中文字幕一区在线观看视频 | 久久精品国产99国产 | 国产欧美在线 | 日韩欧在线 | 91精品啪aⅴ在线观看国产 | 国产高清不卡在线 | 91免费在线播放 | 山岸逢花在线观看 | 山岸逢花在线观看 | 国产亚洲精品美女久久久久久久久久 | 一区二区三区四区日韩 | 婷婷午夜激情网 | 国产色 | 日韩a电影 | 亚洲成人久久久 | 国产一区二区在线免费观看 | 中文字幕日韩视频 | av网站在线免费观看 | 很黄很色很爽的视频 | 伊人在线 | 国产麻豆乱码精品一区二区三区 | 福利片网址 | 久久成人人人人精品欧 | 国产福利91精品一区二区 | 好吊色欧美一区二区三区四区 | 黄色在线免费看 | 成人在线小视频 | 国产馆一区二区 | 国产伦精品一区二区三区四区视频 | 亚洲三级网站 | 日韩欧美国产一区二区三区 | 亚洲三级在线 | 久久久亚洲国产天美传媒修理工 | 成人黄大片视频在线观看 | 精品不卡 |