
Ookii.Dialogs.WinForms 對話框新手第一次跑通前必知的 4 個坑【免費下載鏈接】ookii-dialogs-winformsAwesome dialogs for Windows Desktop applications built with Microsoft .NET (WinForms)項目地址: https://gitcode.com/gh_mirrors/oo/ookii-dialogs-winformsOokii.Dialogs.WinForms 為 WinForms 桌面應(yīng)用提供任務(wù)、憑據(jù)、進度、輸入和 Vista 風(fēng)格文件對話框等原生級控件。本文帶你從裝環(huán)境到彈出第一個對話框繞開新手集成時最常見的 4 個報錯。先花 30 秒認識這個項目項目內(nèi)容項目名Ookii.Dialogs.WinForms主語言C#運行環(huán)境Windows.NET 6 / .NET 5 / .NET Core 3.1 / .NET Framework 4.6.2核心能力TaskDialog、CredentialDialog、ProgressDialog、InputDialog、Vista 風(fēng)格文件對話框典型場景替代老式 MessageBox、選文件夾、輸入憑據(jù)、展示長耗時任務(wù)進度它只是個類庫引用后直接調(diào)用即可。倉庫里的示例程序就是最好的使用手冊建議開著對照。動手前的環(huán)境準(zhǔn)備硬性前置條件開發(fā)機是 Windows對話框控件依賴 Windows API非 Windows 平臺只能編譯、不能運行.NET 6 及以上 SDK倉庫 global.json 要求 6.0.100 并自動向前滾動面向 .NET Framework 4.6.2 老項目時確認目標(biāo)機器裝了 Framework 4.6.2步驟如下克隆倉庫git clone https://gitcode.com/gh_mirrors/oo/ookii-dialogs-winforms構(gòu)建并運行示例確認環(huán)境沒問題git clone https://gitcode.com/gh_mirrors/oo/ookii-dialogs-winforms cd ookii-dialogs-winforms dotnet run --project sample/net60/Ookii.Dialogs.WinForms.SampleNet60.csproj在自己的 WinForms 項目里裝官方包dotnet add package Ookii.Dialogs.WinForms舊版包管理器里則是Install-Package Ookii.Dialogs.WinForms。新手第一次跑起來你大概率會撞上的幾個坎編譯報錯找不到 TaskDialog 類型你按搜索習(xí)慣裝了 Ookii.Dialogs.WindowsForms然后new TaskDialog()一行直接標(biāo)紅找不到類型或命名空間名稱。別慌這不是版本問題是包名裝反了。舊包名Ookii.Dialogs.WindowsForms已廢棄官方新包名是Ookii.Dialogs.WinForms——注意 WinForms 和 WindowsForms 拼寫順序的差異。舊包只是項目里保留的一個殼工程不產(chǎn)任何程序集代碼。換成正確包名、重新 restore紅字就沒了。貼下面這段進 Program.cs 就能確認引用生效using Ookii.Dialogs.WinForms; var d new TaskDialog { WindowTitle 集成檢查, MainInstruction 對話框可用, OKButton true }; d.ShowDialog();非 Windows 機器構(gòu)建示例冒出 NETSDK1100上面命令換到 Linux 或 macOS 上執(zhí)行dotnet build會拋 NETSDK1100Windows 目標(biāo)框架只支持在 Windows 上構(gòu)建。原因是庫和示例的 TargetFramework 都帶-windows后綴。只想跨平臺驗證編譯的話在 csproj 里加一行EnableWindowsTargetingtrue/EnableWindowsTargeting但真正彈對話框運行還是回 Windows 機器。點顯示按鈕拋出一行 NotSupportedException對話框?qū)傩远寂浜昧它c擊彈出的瞬間卻拋NotSupportedException。?? 原因在 TaskDialog 依賴 Vista 引入的任務(wù)對話框 API實例化、設(shè)置屬性都是安全的只有 Show 時才做系統(tǒng)版本判斷并拋異常。所以調(diào)用前先查TaskDialog.OSSupportsTaskDialogs為 false 時退回普通 MessageBox示例程序 就是這么寫的。Win10/11 上你碰不到這個雷但交付環(huán)境混雜老系統(tǒng)時它就是定時炸彈。進度對話框一打開就把界面卡死順著習(xí)慣給 ProgressDialog 調(diào)ShowDialog()窗口彈出后界面整個鎖死——任務(wù)線程被模態(tài)窗口擋住進度條自然永遠不走。官方建議是非模態(tài)用Show()顯示對話框后臺線程更新進度用法類似 BackgroundWorker。前三個坑決定你能不能跑通這第四個坑決定跑通之后好不好用所以放在最后。跑通之后順手改一處把系統(tǒng)默認的 FolderBrowserDialog 換成 VistaFolderBrowserDialog前者沒有目錄樹、界面陳舊后者才是用戶習(xí)慣的瀏覽體驗兩行就能換完var dialog new VistaFolderBrowserDialog { Description 選擇資源目錄 }; if (dialog.ShowDialog(this) DialogResult.OK) System.Diagnostics.Debug.WriteLine(dialog.SelectedPath);從裝環(huán)境、排掉 4 個報錯到換上第一個 Vista 風(fēng)格對話框就是 Ookii.Dialogs.WinForms 的完整入門路徑。各對話框的參數(shù)細節(jié)看 README.md 的 Included dialogs 一節(jié)完整用法模式直接翻 MainForm.cs?!久赓M下載鏈接】ookii-dialogs-winformsAwesome dialogs for Windows Desktop applications built with Microsoft .NET (WinForms)項目地址: https://gitcode.com/gh_mirrors/oo/ookii-dialogs-winforms創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考