ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Ookii.Dialogs.WinForms 对话框:新手第一次跑通前必知的 4 个坑

Ookii.Dialogs.WinForms 对话框:新手第一次跑通前必知的 4 个坑 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 桌面应用提供任务、凭据、进度、输入和 Vista 风格文件对话框等原生级控件。本文带你从装环境到弹出第一个对话框绕开新手集成时最常见的 4 个报错。先花 30 秒认识这个项目项目内容项目名Ookii.Dialogs.WinForms主语言C#运行环境Windows.NET 6 / .NET 5 / .NET Core 3.1 / .NET Framework 4.6.2核心能力TaskDialog、CredentialDialog、ProgressDialog、InputDialog、Vista 风格文件对话框典型场景替代老式 MessageBox、选文件夹、输入凭据、展示长耗时任务进度它只是个类库引用后直接调用即可。仓库里的示例程序就是最好的使用手册建议开着对照。动手前的环境准备硬性前置条件开发机是 Windows对话框控件依赖 Windows API非 Windows 平台只能编译、不能运行.NET 6 及以上 SDK仓库 global.json 要求 6.0.100 并自动向前滚动面向 .NET Framework 4.6.2 老项目时确认目标机器装了 Framework 4.6.2步骤如下克隆仓库git clone https://gitcode.com/gh_mirrors/oo/ookii-dialogs-winforms构建并运行示例确认环境没问题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 类型你按搜索习惯装了 Ookii.Dialogs.WindowsForms然后new TaskDialog()一行直接标红找不到类型或命名空间名称。别慌这不是版本问题是包名装反了。旧包名Ookii.Dialogs.WindowsForms已废弃官方新包名是Ookii.Dialogs.WinForms——注意 WinForms 和 WindowsForms 拼写顺序的差异。旧包只是项目里保留的一个壳工程不产任何程序集代码。换成正确包名、重新 restore红字就没了。贴下面这段进 Program.cs 就能确认引用生效using Ookii.Dialogs.WinForms; var d new TaskDialog { WindowTitle 集成检查, MainInstruction 对话框可用, OKButton true }; d.ShowDialog();非 Windows 机器构建示例冒出 NETSDK1100上面命令换到 Linux 或 macOS 上执行dotnet build会抛 NETSDK1100Windows 目标框架只支持在 Windows 上构建。原因是库和示例的 TargetFramework 都带-windows后缀。只想跨平台验证编译的话在 csproj 里加一行EnableWindowsTargetingtrue/EnableWindowsTargeting但真正弹对话框运行还是回 Windows 机器。点显示按钮抛出一行 NotSupportedException对话框属性都配好了点击弹出的瞬间却抛NotSupportedException。⚠️ 原因在 TaskDialog 依赖 Vista 引入的任务对话框 API实例化、设置属性都是安全的只有 Show 时才做系统版本判断并抛异常。所以调用前先查TaskDialog.OSSupportsTaskDialogs为 false 时退回普通 MessageBox示例程序 就是这么写的。Win10/11 上你碰不到这个雷但交付环境混杂老系统时它就是定时炸弹。进度对话框一打开就把界面卡死顺着习惯给 ProgressDialog 调ShowDialog()窗口弹出后界面整个锁死——任务线程被模态窗口挡住进度条自然永远不走。官方建议是非模态用Show()显示对话框后台线程更新进度用法类似 BackgroundWorker。前三个坑决定你能不能跑通这第四个坑决定跑通之后好不好用所以放在最后。跑通之后顺手改一处把系统默认的 FolderBrowserDialog 换成 VistaFolderBrowserDialog前者没有目录树、界面陈旧后者才是用户习惯的浏览体验两行就能换完var dialog new VistaFolderBrowserDialog { Description 选择资源目录 }; if (dialog.ShowDialog(this) DialogResult.OK) System.Diagnostics.Debug.WriteLine(dialog.SelectedPath);从装环境、排掉 4 个报错到换上第一个 Vista 风格对话框就是 Ookii.Dialogs.WinForms 的完整入门路径。各对话框的参数细节看 README.md 的 Included dialogs 一节完整用法模式直接翻 MainForm.cs。【免费下载链接】ookii-dialogs-winformsAwesome dialogs for Windows Desktop applications built with Microsoft .NET (WinForms)项目地址: https://gitcode.com/gh_mirrors/oo/ookii-dialogs-winforms创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表