0

我喜欢 TaskDialogs 并且经常使用它们,但是我在 Windows Form 类之外调用它们时遇到了麻烦。
在 Winforms 类中,可以像这样简单地调用它们:

new Microsoft.WindowsAPICodePack.Dialogs.TaskDialog().Show();

因此,如果在运行我的应用程序时抛出任何异常,为了显示一般错误消息,我将同一行写入 static Program.Main()

try
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}
catch (Exception exception)
{
    // TODO: Show error message here
    new Microsoft.WindowsAPICodePack.Dialogs.TaskDialog().Show();
}

但是当应该显示这个对话框时,我得到一个NotSupportedExceptionat .Show()

TaskDialog 功能需要加载 comctl32.dll 的版本 6,但当前在内存中加载了不同的版本。

app.manifest将版本定义assemblyIdentity为 6.0 包含在项目文件中。

我做了一些研究,发现 TaskDialog 可能需要一个ApplicationContext,但我不知道如何将非Windows.Form对象传递给它。

我该如何解决这个问题?感谢您的任何建议!


(关于TaskDialog的常见问题,我在不同的NuGet版本上进行了测试,WindowsAPICodePack结果相同。为了最好的重现:Install-Package WindowsAPICodePack-CoreShell。问候)

4

0 回答 0