WinUI3入門6:子線程處理UI 窗口加載后執行 獲取和設置控件尺寸 自動生成事件代碼框架

初級代碼游戲的專欄介紹與文章目錄-CSDN博客

我的github:codetoys,所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。

這些代碼大部分以Linux為目標但部分代碼是純C++的,可以在任何平臺上使用。

源碼指引:github源碼指引_初級代碼游戲的博客-CSDN博客

C#是我多年以來的業余愛好,新搞的東西能用C#的就用C#了。


? ? ? ? 只是幾個雜項功能,都不復雜。

目錄

一、子線程處理UI

二、窗口加載后執行OnLoad

三、獲取和設置控件尺寸

四、如何自動生成事件代碼框架


一、子線程處理UI

? ? ? ? 我們知道UI只能在UI線程上操作,自己創建的子線程直接調用UI處理可能會引發異常。

? ? ? ? 在winforms里用Invoke就可以切換到UI線程執行,在WinUI3則略有不同,需要使用調度隊列:

			this.DispatcherQueue.TryEnqueue(() =>{。。。。。。});

? ? ? ? 形式上其實很相似,照著替換一下就行了。

二、窗口加載后執行OnLoad

? ? ? ? 我們經常希望在窗體創建完畢后做一些處理,比如調整一下控件大小,一般在OnLoad之類處理就可以了。

? ? ? ? 然而WinUI3限制很多,并沒有OnLoad,Activated事件也不是在界面布局確定之后發生的,那么如何實現窗口加載后處理呢?

? ? ? ? 一個通用的做法是用一個定時器,延遲若干毫秒之后執行,一般也是比較可靠的。更簡潔的做法是使用調度任務,就像前面子線程處理UI那樣,建立一個低優先級任務,就可以保證在界面創建之后盡快執行:

		public MainWindow(){this.InitializeComponent();。。。。。。//窗口顯示之后的任務this.DispatcherQueue.TryEnqueue(DispatcherQueuePriority.Low,() =>{resize();});}private void resize(){ var button_width = button_do.ActualWidth;button_browser.Width = button_width;button_cancel.Width = button_width;Button_Tmp.Width = button_width;button_Hex.Width = button_width;button_SaveAs.Width = button_width;}

? ? ? ? 注意DispatcherQueue.TryEnqueue的第一個參數DispatcherQueuePriority.Low,表示低優先級。

? ? ? ? 這種方法比定時器好,感覺不到界面是顯示之后發生了變化的。

? ? ? ? 原來的效果:

? ? ? ? 處理之后的效果:

? ? ? ? 所有按鈕都一樣大了(由于選擇的基準的原因,有一個按鈕文字顯示不全,我們可以通過選取最大的按鈕來解決)。

三、獲取和設置控件尺寸

? ? ? ? winforms的控件尺寸是可讀可寫的,讀到的就是當前值,寫入的就是新值,WinUI3控件尺寸區分實際值和設置值。

????????比如上面的代碼,獲取空間實際寬度用ActualWidth,而Width值因為沒有設置過,值是NaN。遷移代碼的時候一定要注意。

四、如何自動生成事件代碼框架

? ? ? ? 如果使用Visual Studio,可以在編輯代碼時自動生成事件代碼框架。

????????在xmal里輸入到雙引號的時候會自動提供幫助:

? ? ? ? “<新建事件處理程序>”就是自動創建框架出來:

?

? ? ? ? 在C#代碼里給事件添加處理程序也會自動提供幫助:

?

? ? ? ? 提示按“Tab”自動創建:

?

? ? ? ? 已經出現了建議的名字,可以改名字,也可以直接回車確認:

? ? ? ? ?這里默認代碼拋出了異常,看來跟上面的不是一個人寫的。


(這里是文檔結束)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909906.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909906.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909906.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

中國招聘智能化白皮書:從 “人撐不住“ 到 “AI 破局“ 的底層邏輯革命——AI得賢招聘官第六代AI面試官

一場面試&#xff0c;牽動一家公司的人力系統。 當簡歷數量以千計堆疊、當HR通宵挑燈刷篩選、當面試質量與效率陷入兩難&#xff0c;招聘不再只是流程問題&#xff0c;而成了“組織生存”的關鍵變量。 問題是&#xff1a;靠人&#xff0c;已經撐不住了。 企業招聘正步入前所…

防爆型激光測距傳感器:危險環境中的安全守護者

在石油化工、煤礦開采、核電站等高危工業場景中&#xff0c;爆炸性氣體與粉塵的存在讓傳統測量設備望而卻步。而防爆型激光測距傳感器的出現&#xff0c;猶如為這些領域注入了一劑“安全強心針”&#xff0c;以毫米級精度與防爆雙重保障&#xff0c;重新定義了工業測量的安全邊…

【AI編程】PC的一個提示詞,生成網站首頁,模型gpt4.1 、deepseekv3和claude3.7對比,你更喜歡哪個?

AI提示詞&#xff1a; 角色 你是一位資深的前端工程師、設計師和插畫師 設計風格 優雅的極簡主義美學與功能的完美平衡; 清新柔和的漸變配色與品牌色系渾然一體; 恰到好處的留白設計; 輕盈通透的沉浸式體驗; 信息層級通過微妙的陰影過渡與模塊化卡片布局清晰呈現; 按鈕添加…

跟著AI學習C# Day12

&#x1f4c5; Day 12&#xff1a;LINQ&#xff08;Language Integrated Query&#xff09;基礎 ? 目標&#xff1a; 理解 LINQ 的基本概念和作用&#xff1b;掌握使用 LINQ 查詢集合&#xff08;如 List<T>、Array&#xff09;&#xff1b;學會使用常用 LINQ 方法&am…

ubuntu網絡管理五花八門netplan 、NetworkManager、systemd、networking是什么關系

文章目錄 **1. Netplan&#xff08;網絡配置抽象層&#xff09;****2. NetworkManager&#xff08;動態網絡管理&#xff09;****3. systemd-networkd&#xff08;輕量級網絡管理&#xff09;****4. networking&#xff08;傳統的 ifupdown&#xff09;****5. 它們之間的關系**…

Python爬蟲實戰:研究Twisted框架相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網信息的爆炸式增長,網絡爬蟲作為一種高效獲取和收集網絡信息的技術手段,在搜索引擎優化、市場調研、數據挖掘等領域有著廣泛的應用。傳統的同步爬蟲在面對大量 URL 請求時,由于 I/O 操作的阻塞特性,效率低下,難以滿足實際應用需求。…

內網運行控制四百來個海康威視硬件物聯網定員管控軟件(華為平板電腦版)

內網運行控制四百來個海康威視硬件物聯網定員管控軟件&#xff08;華為平板電腦版&#xff09; 從去年12月至今&#xff0c;自研一套在內網中的華為平板電腦上運行&#xff0c;控制四百來個海康威視硬件的物聯網定員管控軟件&#xff0c;開始上線投入運行。 運行環境為華為平板…

C++ 面向對象特性詳解:繼承機制

&#x1f680; C 面向對象特性詳解&#xff1a;繼承機制全解析——代碼復用與擴展的核心&#xff08;含實戰陷阱&#xff09; &#x1f4c5; 更新時間&#xff1a;2025年6月19日 &#x1f3f7;? 標簽&#xff1a;C | 繼承 | OOP | 面向對象 | 代碼復用 | C基礎 文章目錄 &…

學習日記-day33-6.19

知識點&#xff1a; 1.Spring課程概述 知識點 核心內容 重點 Spring框架概述 輕量級容器框架&#xff0c;封裝復雜邏輯&#xff0c;需理解IOC、AOP等核心機制 容器框架 vs 普通框架、封裝帶來的理解門檻 學習難點 動態代理、反射、注解、IO操作、XML解析、容器&#xf…

網絡編程中操作系統連接隊列管理:Linux TCP隊列深度解析

在現代網絡編程中&#xff0c;操作系統內核扮演著至關重要的角色&#xff0c;負責管理網絡通信的復雜細節&#xff0c;從而為應用程序提供抽象接口。對于服務器應用程序而言&#xff0c;高效處理大量傳入連接請求是確保性能和可靠性的核心。操作系統通過維護專門的隊列機制來管…

StableDiffusion實戰-手機壁紙制作 第一篇:從零基礎到生成藝術品的第一步!

大家好!歡迎來到《StableDiffusion實戰-手機壁紙制作》系列的第一篇! 在這一篇文章里,我們將一起探索如何用StableDiffusion(SD)這款強大的工具,快速制作出炫酷的手機壁紙。 如果你對生成藝術、AI繪圖感興趣,那你一定不能錯過! 你能做什么?你將做什么! 在之前的系…

運維——14.PowerShell 與Linux 、 macOS通用的命令

PowerShell 最初是 Windows 平臺的&#xff0c;但現在已經有了 PowerShell Core&#xff0c;它是跨平臺的&#xff0c;支持 Linux 和 macOS。在 PowerShell Core 中有一些Linux 和 macOS通用的命令。理清楚這些有助于學習多系統命令。 在 Linux/macOS 上使用 PowerShell 完成文…

C#的泛型和匿名類型

一、C#的泛型簡介 泛型是一種允許你延遲編寫類或方法中的數據類型規范&#xff0c;直到你在實際使用時才替換為具體的數據類型【簡單的說&#xff1a;泛型就是允許我們編寫能夠適用于任何數據類型的代碼&#xff0c;而無需為每種特定類型重寫相同的代碼】(T是類型參數&#xff…

日語面試ai助手推薦:高效備考并應對日語面試難題

在準備日語面試的路上&#xff0c;你是否時常感到力不從心&#xff1f;每到模擬面試環節&#xff0c;總怕自己答非所問、用語不地道&#xff0c;或是緊張到腦子一片空白。查找資料時&#xff0c;面對海量的日語問答、面試范本和專業術語&#xff0c;常常分不清輕重緩急&#xf…

【63 Pandas+Pyecharts | 泡泡瑪特微博熱搜評論數據分析可視化】

文章目錄 &#x1f3f3;??&#x1f308; 1. 導入模塊&#x1f3f3;??&#x1f308; 2. Pandas數據處理2.1 讀取數據2.2 數據信息2.3 數據去重2.4 數據去空2.5 時間處理2.6 性別處理2.7 評論內容處理 &#x1f3f3;??&#x1f308; 3. Pyecharts數據可視化3.1 用戶評論IP分…

python-最長無重復子數組

最長無重復子數組 描述代碼實現 描述 給定一個長度為n的數組arr&#xff0c;返回arr的最長無重復元素子數組的長度&#xff0c;無重復指的是所有數字都不相同。 子數組是連續的&#xff0c;比如[1,3,5,7,9]的子數組有[1,3]&#xff0c;[3,5,7]等等&#xff0c;但是[1,3,7]不是…

探索 MySQL 緩存機制:提升數據庫讀取性能的有效策略

在現代應用中,數據庫的讀取性能是影響用戶體驗和系統響應速度的關鍵因素。當應用程序面臨高并發讀請求時,直接訪問磁盤的開銷會成為瓶頸。為了應對這一挑戰,MySQL 引入了多種緩存機制,旨在減少磁盤 I/O,加快數據檢索速度。 理解并合理利用這些緩存機制,是提升 MySQL 數據…

深度學習-164-MCP技術之開發本地MCP服務器和異步客戶端

文章目錄 1 概念1.1 MCP1.2 準備數據接口2 開發MCP服務器2.1 server.py2.1.1 @mcp.resource2.1.2 @mcp.tool()2.1.3 @mcp.prompt()2.2 調試模式啟動mcp-server2.2.1 資源2.2.2 工具2.2.3 提示詞3 開發MCP客戶端3.1 調用工具client_tool3.2 獲取提示client_prompt3.3 讀取資源cl…

第八十一篇 大數據開發基礎:隊列數據結構詳解與實戰應用(附生活化案例)

在大數據開發的龐大體系中&#xff0c;隊列&#xff08;Queue&#xff09; 作為基礎數據結構之一&#xff0c;其重要性不言而喻。它不僅是構建高效數據管道的核心組件&#xff0c;更是實現異步處理、流量削峰、任務調度的關鍵技術。本文將深入解析隊列的原理&#xff0c;結合生…

linux操作命令(最常用)

一、文件與目錄操作 命令作用常用參數示例ls列出目錄內容ls -l&#xff08;詳細列表&#xff09; ls -a&#xff08;顯示隱藏文件&#xff09;cd切換目錄cd ~&#xff08;回家目錄&#xff09; cd ..&#xff08;返回上級&#xff09;pwd顯示當前路徑-cp復制文件/目錄cp -r di…