私は TaskDialogs が大好きで、頻繁に使用していますが、Windows フォーム クラスの外でそれらを呼び出すのに問題があります。
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();
}
しかし、このダイアログが表示されるべきとき、私はNotSupportedException
atを取得し.Show()
ます:
TaskDialog 機能はバージョン 6 の comctl32.dll をロードする必要がありますが、現在別のバージョンがメモリにロードされています。
app.manifest
assemblyIdentity
バージョンを 6.0 に定義することがプロジェクト ファイルに含まれています。
私はいくつかの調査を行い、 TaskDialog が を必要とする可能性があることを発見しましたが、非オブジェクトをApplicationContext
渡す方法がわかりません。Windows.Form
この問題を回避するにはどうすればよいですか? ご提案ありがとうございます。
(TaskDialog で頻繁に発生する問題については、さまざまな NuGet バージョンでこれをテストしましたがWindowsAPICodePack
、同じ結果が得られました。再現性を高めるために:Install-Package WindowsAPICodePack-Core
とShell
. よろしく)