设置顶级用户控件的任务栏图标(Winforms)

时间:2014-04-17 07:22:21

标签: c# .net winforms user-controls taskbar

我有一个顶级(即像窗口一样)UserControl(.NET 4.0),我用它来模拟自定义表单。我可以像这样轻松设置标题文本和任务栏文本:

public override string Text
{
    get { return base.Text; }
    set
    {
        base.Text = value
        TitleText.Text = value;
    }
}

设置标题文本和任务栏文本:

What I have achieved so far

请注意,图片底部的栏是我的实际任务栏;我已经安装了备用shell

<小时/> 我遇到的问题是我似乎无法设置此UserControl的任务栏图标,因为它没有可覆盖的Icon属性,因此我无法将任务栏图标设置为我会用文字。另请注意,UserControl中显示的图标只是包含图片的PictureBox

所以,简而言之,我希望能够做到这一点:

What I want to achieve

但我不能这样做,因为Icon没有UserControl属性:

public override Icon Icon
{
    get { return base.Icon; }
    set
    {
         base.Icon = value;
         TitleBarIcon.Image = value.ToBitmap();
    }
}

<小时/> 如何更改任务栏图标?
提前致谢;)

1 个答案:

答案 0 :(得分:1)

我不确定我是否帮助你,但我认为你有可能:

设置ParentForm的Icon。

或按照此处所述设置ApplicationIcon:http://msdn.microsoft.com/en-us/library/339stzf7.aspx

修改

当您使用控件作为TopLevelControl时,您需要在创建控件期间发送WM_SETICON - 就像表单一样!

取自Form.CreateHandle:

        Icon icon = this.Icon;
        if (icon != null && this.TaskbarOwner.Handle != IntPtr.Zero)
        {
            UnsafeNativeMethods.SendMessage(this.TaskbarOwner, 128, 1, icon.Handle);
        }