Windows API Code Pack TaskDialog missing icon

2020-04-12 08:22发布

The icons in my TaskDialog are missing:

And in the taskbar:

My code is this:

using Microsoft.WindowsAPICodePack;
using Microsoft.WindowsAPICodePack.Dialogs;

...

TaskDialog taskDialog = new TaskDialog();
taskDialog.Caption = "Error";
taskDialog.InstructionText = "Test error message.";
taskDialog.Text = "Icon seems to be missing.";
taskDialog.DetailsExpandedText = "Test";
taskDialog.DetailsCollapsedLabel = "Expand";
taskDialog.StandardButtons = TaskDialogStandardButtons.Ok;
taskDialog.Icon = TaskDialogStandardIcon.Error;
taskDialog.Show();

I'm using version 1.1 from here. Any clue why they are missing and how to enable them? Dependencies are set as following:

  <dependency>
    <dependentAssembly>
      <assemblyIdentity
      type="win32"
      name="Microsoft.Windows.Common-Controls"
      version="6.0.0.0"
      processorArchitecture="*"
      publicKeyToken="6595b64144ccf1df"
      language="*"
/>
    </dependentAssembly>
  </dependency>

2条回答
beautiful°
2楼-- · 2020-04-12 08:38

I've found a workaround to this. Apparently it is a bug in the API itself.

taskDialog.Opened += new EventHandler(taskDialog_Opened);

...

public void taskDialog_Opened(object sender, EventArgs e)
{
    TaskDialog taskDialog = sender as TaskDialog;
    taskDialog.Icon = taskDialog.Icon;
    taskDialog.FooterIcon = taskDialog.FooterIcon;
    taskDialog.InstructionText = taskDialog.InstructionText;
}
查看更多
Ridiculous、
3楼-- · 2020-04-12 09:00

I'd add this as a comment but I don't have enough rep. The marked answer worked for me once I removed this line of code:

    taskDialog.FooterIcon = taskDialog.FooterIcon;

It was causing an unhandled exception.

查看更多
登录 后发表回答