指定图标时,TaskDialog 窗口高度不正确

Posted

技术标签:

【中文标题】指定图标时,TaskDialog 窗口高度不正确【英文标题】:TaskDialog window height is incorrect when an icon is specified 【发布时间】:2014-01-19 14:19:50 【问题描述】:

编辑:

我已经修复了代码包的来源并上传了更新的 NuGet 包:

https://www.nuget.org/packages/WindowsAPICodePack-Shell/

感谢 dmex 修复错误: http://archive.msdn.microsoft.com/WindowsAPICodePack/WorkItem/View.aspx?WorkItemId=108

如您所见,问题已解决,无需使用Opened event 的繁琐语法:


指定图标时,对话框高度不正确;最后一个命令链接不完全可见:

您知道如何解决此问题吗?

用于显示此对话框的代码:

var dialog = new TaskDialog

    Caption = Title,
    InstructionText = "Some files added are already in the collection.",
    Text = "They have been skipped."
;
dialog.Opened += (s1, e1) =>  dialog.Icon = TaskDialogStandardIcon.Warning; ;

var linkContinue = new TaskDialogCommandLink("Continue", "Continue", string.Empty);
linkContinue.Click += (s2, e2) =>

    var s = (TaskDialogCommandLink)s2;
    var taskDialog = (TaskDialog)(s.HostingDialog);
    taskDialog.Close();
;
dialog.Controls.Add(linkContinue);

var linkView = new TaskDialogCommandLink("View", "View these files", string.Empty);
linkView.Click += (s3, e3) =>

    var s = (TaskDialogCommandLink)s3;
    var taskDialog = (TaskDialog)(s.HostingDialog);
    taskDialog.Close();
    var window1 = new Window1  Text = files, Title = Title ;
    window1.ShowDialog();
;
dialog.Controls.Add(linkView);

dialog.Show();

【问题讨论】:

@Aybe...知道为什么 API 中的 GetProperty(SystemProperties.System.Photo.DateTaken) 不返回字符串或日期时间吗?无论它返回的是什么,我似乎无法弄清楚,都不能转换为 DateTime 以及 Window1 对象来自哪个库,我似乎找不到它。 【参考方案1】:

再次尝试在 .Opend 中分配“InstructionText”(似乎也解决了 1.1.0.0 中的问题)。

        var dialog = new TaskDialog
        
            Caption = Title,
            InstructionText = "Some files added are already in the collection.",
            Text = "They have been skipped."
        ;

        dialog.Opened += (s1, e1) =>
        
            dialog.Icon = TaskDialogStandardIcon.Warning;
            dialog.InstructionText = dialog.InstructionText; // < seems to work
        ;

【讨论】:

实际上库中有一个错误阻止了这种语法:图标不会显示,所以这就是它在 Opened 中完成的原因。 您从哪里获得 API 代码包?我的来自 Nuget(版本 1.1.0.0)。 Nuget, VS2012 (NET 4.5), "Windows7APICodePack" 1.0.0.0(来自微软的那个) 看起来在 1.0.0.0 中你没有这个图标问题 - 这是 1.1.0.0 的新功能 看起来像第二次在 .Opened 处理程序中设置“dialog.InstructionText”(设置为相同的值)也将其修复为 1.1(强制对话框重新计算其大小)

以上是关于指定图标时,TaskDialog 窗口高度不正确的主要内容,如果未能解决你的问题,请参考以下文章

WPF编程,指定窗口图标窗口标题,使得在运行状态下任务栏显示窗口图标的一种方法。

TaskDialog 引发异常:需要版本 6 中的 comctl32.dll

使用 ProgressBar 和自定义按钮显示 TaskDialog 时出错

使用 add_widget 方法时 Gridster 网格高度不正确

访问的 URL 不正确

系统找不到指定的路径.怎么回事