Windows窗体中的全局trayicon和应用程序图标?

时间:2016-08-05 15:34:27

标签: c# winforms windows-forms-designer

我希望托盘图标和应用程序图标对于应用程序中的所有表单都是通用的。 我怎样才能做到这一点。 对于申请图标: 我在应用程序的属性中添加了新图标,但仍在任务栏中显示默认图标。

对于托盘图标:我可以为单个表单执行多个功能,例如添加上下文菜单,隐藏,打开等。但是如何为所有表单实现此功能。

我可以创建一个可以应用于所有表单的全局文件吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Form.Load事件或构造函数在代码中设置图标。

private void Form1_Load(object sender, EventArgs e)
{
    // you could place this lines also in constructor
    // but make sure you place it after the InitializeComponent() call
    // bar is the name you defined while adding the resource
    this.Icon = Properties.Resources.bar;

    // and for your tray icons
    this.notifyIcon1.Icon = Properties.Resources.bar;
}

您可以使用表单设计器执行相同操作,并在表单的属性部分和托盘图标中设置Icon属性。在这种情况下,设计人员将在设计器生成的文件中放置几乎相同的代码。

修改

为了防止反复编写相同的代码,您可以编写自己的Form基类并在构造函数中设置图标。然后你让所有Forms派生自该基类。

// File: MyFormBase.cs
public partial class MyFormBase : Form
{
    public MyFormBase()
        : base()
    {
        Icon = Properties.Resources.bar;
    }
}

// In your Form file:
public partial class MyForm : MyFormBase
{
    // ...
}

将基类从From更改为MyFormBase后,您必须构建项目以再次使用表单设计器。