65.9K
CodeProject 正在变化。 阅读更多。
Home

Cinchoo - 简化的 Windows 系统托盘应用程序开发

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

Nov 9, 2014

CPOL

12分钟阅读

viewsIcon

16589

downloadIcon

228

易于创建和使用的 Windows 系统托盘应用程序

目录

1. 引言

Cinchoo 是 .NET 的应用程序框架。它为用户提供的一个主要功能是应用程序配置管理。应用程序配置是应用程序在运行时从源读取和/或写入的信息。

它为开发者社区提供的另一个重要功能是统一的、通用的应用程序宿主,可以构建和运行不同模式的应用程序。一次编码,即可将应用程序作为控制台、Windows、WPF、Windows 服务或 Windows 系统托盘应用程序运行。

在本文中,我将演示如何使用此库创建 Windows 系统托盘应用程序。它是一种更简单、更流畅的模型,可以在一个地方配置托盘应用程序的所有内容。将其作为库,让您可以专注于核心开发任务。Cinchoo 提供了一个清晰简单的 API 来开发和运行 Windows 系统托盘应用程序。

2. 要求

应用程序宿主库是用 C# 编写的,适用于 .NET 4.0 Framework。它是 Cinchoo 框架的一部分,该框架是一个功能丰富的库,包含配置管理、通用应用程序宿主、Shell 功能等。

3. “Hello World!” 示例

让我们通过一个简单的示例开始,该示例是一个显示“Hello World!”工具提示文本的 Windows 系统托盘应用程序。

在此处下载最新的Cinchoo 二进制文件:这里。(Nuget 命令:Install-Package Cinchoo)

  • 打开 VS.NET 2010 或更高版本
  • 创建一个示例 VS.NET (.NET Framework 4) 控制台应用程序项目
  • 添加对 Cinchoo.Core.dll 的引用
  • 使用 Cinchoo.Core 命名空间
  • 复制并粘贴以下应用程序宿主对象

清单 3.1 定义 ApplicationHost 对象

[ChoApplicationHost]
public class HelloWorldAppHost : ChoApplicationHost
{
    protected override void ApplyGlobalApplicationSettingsOverrides(ChoGlobalApplicationSettings obj)
    {
        obj.TrayApplicationBehaviourSettings.TurnOn = true;
        obj.TrayApplicationBehaviourSettings.TooltipText = "Hello World!";
    }
}

上面的代码说明了如何定义 ApplicationHost 对象。首先,定义一个从 ChoApplicationHost 派生的 ApplicationHost(例如 HelloWorldAppHost)类,这表明该对象是一个 ApplicationHost 对象。并且,它必须用 ChoApplicationHostAttribute 装饰才能完成定义。

在此示例中,我们重写了 ApplyGlobalApplicationSettingsOverrides 方法。在其中,我们通过将 TrayApplicationBehaviourSettings 对象的 TurnOn 成员设置为 true 来指示应用程序作为托盘应用程序运行。设置 TooltipText 值为 "Hello World!",当您将鼠标悬停在托盘图标上时,将显示此消息。

列表 3.2 Main 方法

class Program
{
    static void Main(string[] args)
    {
        ChoApplication.Run(args);
    }
}

我们首先在应用程序的主入口点调用 ChoApplication.Run() 方法。就是这样。所有配置、以托盘应用程序形式运行应用程序的繁重工作都由库在后台完成。现在您的应用程序已启用托盘应用程序。自己试试吧。

4. 定义应用程序宿主对象

4.1 ChoApplicationHostAttribute

所有应用程序宿主对象都必须用 ChoApplicationHostAttribute 装饰。一个应用程序至少必须定义一个应用程序宿主对象。Cinchoo 框架将在应用程序启动时发现它们。

4.2 ChoApplicationHost

所有应用程序宿主对象都必须从 ChoApplicationHost 类派生。默认情况下,它提供了运行托盘应用程序的基本框架,而无需进行任何自定义。在某些情况下,您可能希望按照自己的方式进行自定义。在这种情况下,请重写其中的必要方法。应用程序必须在入口程序集或引用的程序集中定义一个应用程序宿主对象。在此对象中,您可以根据需要重写多个方法来定制托盘应用程序。

4.2.1 ApplyGlobalApplicationSettingsOverrides() 方法

在派生类中实现时,在应用程序启动时执行。在这里,您可以选择重写托盘应用程序配置参数以对其进行自定义。有关更多信息,请参阅“TrayApplicationBehaviourSettings ”部分。

4.2.2 AfterNotifyIconConstructed() 方法

在派生类中实现时,在应用程序以托盘应用程序模式运行时执行。在此方法中,您可以更改托盘图标属性。有关更多信息,请参阅“ChoNotifyIcon”部分。

4.2.3 OnTrayAppAboutMenuClicked() 方法

在派生类中实现时,在用户从上下文菜单中单击“关于”菜单项时执行。在这里,您可以显示应用程序的产品信息。

4.2.4 OnTrayAppExitMenuClicked() 方法

在派生类中实现时,在用户从上下文菜单中单击“退出”菜单项时执行。在这里,您可以执行应用程序的任何清理操作。

4.2.5 OnTrayAppHelpMenuClicked() 方法

在派生类中实现时,在用户从上下文菜单中单击“帮助”菜单项时执行。在这里,您可以显示应用程序的帮助信息。

4.2.6 OnTrayAppOpenMenuClicked() 方法

在派生类中实现时,在用户从上下文菜单中单击“打开”菜单项时执行。默认情况下,Cinchoo 框架将打开您的应用程序的主窗口(如果指定了)。此默认行为可以被覆盖以执行任何自定义操作。

4.2.7 MainWindowObject 属性

这是一个属性,返回应用程序的主窗口。默认值为 null。在这种情况下,您的应用程序是一个无窗口的托盘应用程序。此属性可以被覆盖以返回 System.Windows.Forms.Form 或 System.Windows.Window 对象。

4.2.8 ApplicationObject 属性

此属性主要用于 WPF 应用程序。它返回一个 System.Windows.Application 对象。

5. 配置

5.1 TrayApplicationBehaviourSettings

这是自定义托盘应用程序的最简单方法。您可以在应用程序宿主对象中重写 ApplyGlobalApplicationSettingsOverrides() 方法,或者打开 ChoCoreFrx.xml 配置文件来操作此对象的属性。Cinchoo 框架在启动托盘应用程序之前使用它们来对其进行自定义。

5.1.1 TurnOn

获取或设置托盘应用程序的启动开关。

清单 5.1.1.1 以编程方式设置 TurnOn

[ChoApplicationHost]
public class ChoAppHost : ChoApplicationHost
{
    protected override void ApplyGlobalApplicationSettingsOverrides(ChoGlobalApplicationSettings obj)
    {
        obj.TrayApplicationBehaviourSettings.TurnOn = true;
        obj.TrayApplicationBehaviourSettings.BalloontipText = "Hello World!";
    }
}

清单 5.1.1.2 通过 ChoCoreFrx.xml 文件设置 TurnOn

打开 ChoCoreFrx.xml 文件,在 'trayApplicationBehaviourSettings' 元素下的 'turnOn' 属性中指定布尔值。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <globalApplicationSettings applicationId="WindowlessTrayApp.exe" eventLogSourceName="WindowlessTrayApp.exe">
    <behaviourSettings hideWindow="false" bringWindowToTop="false" alwaysOnTop="false" runAtStartup="false" runOnceAtStartup="false" singleInstanceApp="true" activateFirstInstance="false" showEnvironmentSelectionWnd="true" />
    <trayApplicationBehaviourSettings turnOn="true" showInTaskbar="true" hideMainWindowAtStartup="false" tooltipText="" balloonTipText="Hello World!" hideTrayIconWhenMainWindowShown="false" turnOnMode="OnMinimize">
      <trayIcon />
      <fontSettings fontName="Helvetica" fontSize="8">
        <fontColor />
      </fontSettings>
    </trayApplicationBehaviourSettings>
  </globalApplicationSettings>
</configuration>

5.1.2 BalloonTipText

获取或设置与 NotifyIcon 关联的气球提示中显示的文本。

清单 5.1.2.1 以编程方式设置 BalloonTipText

[ChoApplicationHost]
public class ChoAppHost : ChoApplicationHost
{
    protected override void ApplyGlobalApplicationSettingsOverrides(ChoGlobalApplicationSettings obj)
    {
        obj.TrayApplicationBehaviourSettings.TurnOn = true;
        obj.TrayApplicationBehaviourSettings.BalloontipText = "Hello World!";
    }
}

清单 5.1.2.2 通过 ChoCoreFrx.xml 文件设置 BalloontipText

打开 ChoCoreFrx.xml 文件,在 'trayApplicationBehaviourSettings' 元素下的 'balloonTipText' 属性中指定文本。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <globalApplicationSettings applicationId="WindowlessTrayApp.exe" eventLogSourceName="WindowlessTrayApp.exe">
    <behaviourSettings hideWindow="false" bringWindowToTop="false" alwaysOnTop="false" runAtStartup="false" runOnceAtStartup="false" singleInstanceApp="true" activateFirstInstance="false" showEnvironmentSelectionWnd="true" />
    <trayApplicationBehaviourSettings turnOn="false" showInTaskbar="true" hideMainWindowAtStartup="false" tooltipText="" balloonTipText="Hello World!" hideTrayIconWhenMainWindowShown="false" turnOnMode="OnMinimize">
      <trayIcon />
      <fontSettings fontName="Helvetica" fontSize="8">
        <fontColor />
      </fontSettings>
    </trayApplicationBehaviourSettings>
  </globalApplicationSettings>
</configuration>

5.1.3 TooltipText

获取或设置当鼠标指针停留在通知区域图标上时显示的工具提示文本。

清单 5.1.3.1 以编程方式设置 TooltipText

[ChoApplicationHost]
public class ChoAppHost : ChoApplicationHost
{
    protected override void ApplyGlobalApplicationSettingsOverrides(ChoGlobalApplicationSettings obj)
    {
        obj.TrayApplicationBehaviourSettings.TurnOn = true;
        obj.TrayApplicationBehaviourSettings.BalloontipText = "Hello World!";
    }
}

清单 5.1.3.2 通过 ChoCoreFrx.xml 文件设置 TooltipText

打开 ChoCoreFrx.xml 文件,在 'trayApplicationBehaviourSettings' 元素下的 'tooltipText' 属性中指定文本。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <globalApplicationSettings applicationId="WindowlessTrayApp.exe" eventLogSourceName="WindowlessTrayApp.exe">
    <behaviourSettings hideWindow="false" bringWindowToTop="false" alwaysOnTop="false" runAtStartup="false" runOnceAtStartup="false" singleInstanceApp="true" activateFirstInstance="false" showEnvironmentSelectionWnd="true" />
    <trayApplicationBehaviourSettings turnOn="false" showInTaskbar="true" hideMainWindowAtStartup="false" tooltipText="" balloonTipText="Hello World!" hideTrayIconWhenMainWindowShown="false" turnOnMode="OnMinimize">
      <trayIcon />
      <fontSettings fontName="Helvetica" fontSize="8">
        <fontColor />
      </fontSettings>
    </trayApplicationBehaviourSettings>
  </globalApplicationSettings>
</configuration>

5.1.4 TrayIcon

获取或设置当前图标。它将在通知区域显示应用程序的图标。

清单 5.1.4.1 以编程方式设置 TrayIcon

[ChoApplicationHost]
public class ChoAppHost : ChoApplicationHost
{
    protected override void ApplyGlobalApplicationSettingsOverrides(ChoGlobalApplicationSettings obj)
    {
        obj.TrayApplicationBehaviourSettings.TurnOn = true;
        obj.TrayApplicationBehaviourSettings.TrayIcon = @"C:\Sample.ico";
    }
}

清单 5.1.4.2 通过 ChoCoreFrx.xml 文件设置 TrayIcon

打开 ChoCoreFrx.xml 文件,在 'trayApplicationBehaviourSettings' 元素下的 'trayIcon' 元素中指定图标文件的路径。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <globalApplicationSettings applicationId="WindowlessTrayApp.exe" eventLogSourceName="WindowlessTrayApp.exe">
    <behaviourSettings hideWindow="false" bringWindowToTop="false" alwaysOnTop="false" runAtStartup="false" runOnceAtStartup="false" singleInstanceApp="true" activateFirstInstance="false" showEnvironmentSelectionWnd="true" />
    <trayApplicationBehaviourSettings turnOn="false" showInTaskbar="true" hideMainWindowAtStartup="false" tooltipText="" balloonTipText="Hello World!" hideTrayIconWhenMainWindowShown="false" turnOnMode="OnMinimize">
      <trayIcon>C:\Sample.ico</trayIcon>
      <fontSettings fontName="Helvetica" fontSize="8">
        <fontColor />
      </fontSettings>
    </trayApplicationBehaviourSettings>
  </globalApplicationSettings>
</configuration>

5.1.5 ShowInTaskbar

获取或设置一个值,该值指示主窗口是否显示在 Windows 任务栏上。

清单 5.1.5.1 以编程方式设置 ShowInTaskbar

[ChoApplicationHost]
public class ChoAppHost : ChoApplicationHost
{
    protected override void ApplyGlobalApplicationSettingsOverrides(ChoGlobalApplicationSettings obj)
    {
        obj.TrayApplicationBehaviourSettings.TurnOn = true;
        obj.TrayApplicationBehaviourSettings.ShowInTaskbar = true;
    }
}

清单 5.1.5.2 通过 ChoCoreFrx.xml 文件设置ShowInTaskbar

打开 ChoCoreFrx.xml 文件,在 'trayApplicationBehaviourSettings' 元素下的 'showInTaskbar' 属性中指定布尔值。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <globalApplicationSettings applicationId="WindowlessTrayApp.exe" eventLogSourceName="WindowlessTrayApp.exe">
    <behaviourSettings hideWindow="false" bringWindowToTop="false" alwaysOnTop="false" runAtStartup="false" runOnceAtStartup="false" singleInstanceApp="true" activateFirstInstance="false" showEnvironmentSelectionWnd="true" />
    <trayApplicationBehaviourSettings turnOn="false" showInTaskbar="true" hideMainWindowAtStartup="false" tooltipText="" balloonTipText="Hello World!" hideTrayIconWhenMainWindowShown="false" turnOnMode="OnMinimize">
      <trayIcon>C:\Sample.ico</trayIcon>
      <fontSettings fontName="Helvetica" fontSize="8">
        <fontColor />
      </fontSettings>
    </trayApplicationBehaviourSettings>
  </globalApplicationSettings>
</configuration>

5.1.6 HideMainWindowAtStartup

获取或设置应用程序启动时是否显示主窗口的值。

清单 5.1.6.1 以编程方式设置 ShowInTaskbar

[ChoApplicationHost]
public class ChoAppHost : ChoApplicationHost
{
    protected override void ApplyGlobalApplicationSettingsOverrides(ChoGlobalApplicationSettings obj)
    {
        obj.TrayApplicationBehaviourSettings.TurnOn = true;
        obj.TrayApplicationBehaviourSettings.HideMainWindowAtStartup = true;
    }
}

清单 5.1.6.2 通过 ChoCoreFrx.xml 文件设置ShowInTaskbar

打开 ChoCoreFrx.xml 文件,在 'trayApplicationBehaviourSettings' 元素下的 'hideMainWindowAtStartup' 属性中指定布尔值。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <globalApplicationSettings applicationId="WindowlessTrayApp.exe" eventLogSourceName="WindowlessTrayApp.exe">
    <behaviourSettings hideWindow="false" bringWindowToTop="false" alwaysOnTop="false" runAtStartup="false" runOnceAtStartup="false" singleInstanceApp="true" activateFirstInstance="false" showEnvironmentSelectionWnd="true" />
    <trayApplicationBehaviourSettings turnOn="false" showInTaskbar="true" hideMainWindowAtStartup="false" tooltipText="" balloonTipText="Hello World!" hideTrayIconWhenMainWindowShown="false" turnOnMode="OnMinimize">
      <trayIcon>C:\Sample.ico</trayIcon>
      <fontSettings fontName="Helvetica" fontSize="8">
        <fontColor />
      </fontSettings>
    </trayApplicationBehaviourSettings>
  </globalApplicationSettings>
</configuration>

5.1.7 HideTrayIconWhenMainWindowShown

获取或设置显示主窗口时是否隐藏托盘图标的值。

清单 5.1.7.1 以编程方式设置 HideTrayIconWhenMainWindowShown

[ChoApplicationHost]
public class ChoAppHost : ChoApplicationHost
{
    protected override void ApplyGlobalApplicationSettingsOverrides(ChoGlobalApplicationSettings obj)
    {
        obj.TrayApplicationBehaviourSettings.TurnOn = true;
        obj.TrayApplicationBehaviourSettings.HideTrayIconWhenMainWindowShown = true;
    }
}

清单 5.1.7.2 通过 ChoCoreFrx.xml 文件设置HideTrayIconWhenMainWindowShown

打开 ChoCoreFrx.xml 文件,在 'trayApplicationBehaviourSettings' 元素下的 'hideTrayIconWhenMainWindowShown' 属性中指定布尔值。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <globalApplicationSettings applicationId="WindowlessTrayApp.exe" eventLogSourceName="WindowlessTrayApp.exe">
    <behaviourSettings hideWindow="false" bringWindowToTop="false" alwaysOnTop="false" runAtStartup="false" runOnceAtStartup="false" singleInstanceApp="true" activateFirstInstance="false" showEnvironmentSelectionWnd="true" />
    <trayApplicationBehaviourSettings turnOn="false" showInTaskbar="true" hideMainWindowAtStartup="false" tooltipText="" balloonTipText="Hello World!" hideTrayIconWhenMainWindowShown="false" turnOnMode="OnMinimize">
      <trayIcon>C:\Sample.ico</trayIcon>
      <fontSettings fontName="Helvetica" fontSize="8">
        <fontColor />
      </fontSettings>
    </trayApplicationBehaviourSettings>
  </globalApplicationSettings>
</configuration>

5.1.8 TurnOnMode

获取或设置应用程序启动到托盘应用程序模式的值。有 3 种模式可供选择

  1. OnMinimize (最小化时,默认)
  2. OnClose (关闭时)
  3. OnMinimizeOrClose (最小化或关闭时)

清单 5.1.8.1 以编程方式设置 TurnOnMode

[ChoApplicationHost]
public class ChoAppHost : ChoApplicationHost
{
    protected override void ApplyGlobalApplicationSettingsOverrides(ChoGlobalApplicationSettings obj)
    {
        obj.TrayApplicationBehaviourSettings.TurnOn = true;
        obj.TrayApplicationBehaviourSettings.TurnOnMode = ChoTrayAppTurnOnMode.OnMinimize;
    }
}

清单 5.1.8.2 通过 ChoCoreFrx.xml 文件设置TurnOnMode

打开 ChoCoreFrx.xml 文件,在 'trayApplicationBehaviourSettings' 元素下的 'turnOnMode' 属性中指定 ChoTrayAppTurnOnMode 值。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <globalApplicationSettings applicationId="WindowlessTrayApp.exe" eventLogSourceName="WindowlessTrayApp.exe">
    <behaviourSettings hideWindow="false" bringWindowToTop="false" alwaysOnTop="false" runAtStartup="false" runOnceAtStartup="false" singleInstanceApp="true" activateFirstInstance="false" showEnvironmentSelectionWnd="true" />
    <trayApplicationBehaviourSettings turnOn="false" showInTaskbar="true" hideMainWindowAtStartup="false" tooltipText="" balloonTipText="Hello World!" hideTrayIconWhenMainWindowShown="false" turnOnMode="OnMinimize">
      <trayIcon>C:\Sample.ico</trayIcon>
      <fontSettings fontName="Helvetica" fontSize="8">
        <fontColor />
      </fontSettings>
    </trayApplicationBehaviourSettings>
  </globalApplicationSettings>
</configuration>

5.1.9 ContextMenu 设置

获取或设置在托盘图标中显示的默认上下文菜单中每个菜单项的可见性。以下是可以通过此设置对象控制的菜单项

  1. 关于
  2. 帮助
  3. 退出
  4. AlwaysOnTop (总在最前)
  5. RunAtSystemsStartup (系统启动时运行)
  6. ShowInTaskbar (在任务栏中显示)

清单 5.1.9.1 以编程方式设置 ContextMenuSettings

[ChoApplicationHost]
public class ChoAppHost : ChoApplicationHost
{
    protected override void ApplyGlobalApplicationSettingsOverrides(ChoGlobalApplicationSettings obj)
    {
        obj.TrayApplicationBehaviourSettings.TurnOn = true;
        obj.TrayApplicationBehaviourSettings.ContextMenuSettings.DisplayShowInTaskbarMenuItem = false;
    }
}

清单 5.1.9.2 通过 ChoCoreFrx.xml 文件设置ContextMenuSettings

打开 ChoCoreFrx.xml 文件,在 'trayApplicationBehaviourSettings' 元素下的 'contextMenuSettings' 元素中为每个属性指定布尔值。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <globalApplicationSettings applicationId="WindowlessTrayApp.exe" eventLogSourceName="WindowlessTrayApp.exe">
    <behaviourSettings hideWindow="false" bringWindowToTop="false" alwaysOnTop="false" runAtStartup="false" runOnceAtStartup="false" singleInstanceApp="true" activateFirstInstance="false" showEnvironmentSelectionWnd="true" />
    <trayApplicationBehaviourSettings turnOn="false" showInTaskbar="true" hideMainWindowAtStartup="false" tooltipText="" balloonTipText="Hello World!" hideTrayIconWhenMainWindowShown="false" turnOnMode="OnMinimize">
      <trayIcon>C:\Sample.ico</trayIcon>
      <fontSettings fontName="Helvetica" fontSize="8">
        <fontColor />
      </fontSettings>
      <contextMenuSettings displayAlwaysOnTopMenuItem="true" displayRunAtSystemsStartupMenuItem="true" displayShowInTaskbarMenuItem="true" displayAboutMenuItem="true" displayHelpMenuItem="true" displayExitMenuItem="true" />
    </trayApplicationBehaviourSettings>
  </globalApplicationSettings>
</configuration>

5.1.10 Font Settings (字体设置)

获取或设置用于在任务托盘中显示文本而不是图标的字体属性。使用 ShowText() 的一个重载来设置此文本。这些是全局应用程序设置,可以通过 ShowText() 的一个重载来覆盖。

可用属性包括

  1. FontColor (字体颜色)
  2. FontName (字体名称)
  3. FontSize (字体大小)

清单 5.1.10.1 以编程方式设置 FontSettings

[ChoApplicationHost]
public class ChoAppHost : ChoApplicationHost
{
    protected override void ApplyGlobalApplicationSettingsOverrides(ChoGlobalApplicationSettings obj)
    {
        obj.TrayApplicationBehaviourSettings.TurnOn = true;
        obj.TrayApplicationBehaviourSettings.ContextMenuSettings.DisplayShowInTaskbarMenuItem = false;
        obj.TrayApplicationBehaviourSettings.FontSettings.FontSize = 9;
    }
}

清单 5.1.10.2 通过 ChoCoreFrx.xml 文件设置FontSettings

打开 ChoCoreFrx.xml 文件,在 'trayApplicationBehaviourSettings' 元素下的 'fontSettings' 元素中为每个适用的属性指定值。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <globalApplicationSettings applicationId="WindowlessTrayApp.exe" eventLogSourceName="WindowlessTrayApp.exe">
    <behaviourSettings hideWindow="false" bringWindowToTop="false" alwaysOnTop="false" runAtStartup="false" runOnceAtStartup="false" singleInstanceApp="true" activateFirstInstance="false" showEnvironmentSelectionWnd="true" />
    <trayApplicationBehaviourSettings turnOn="false" showInTaskbar="true" hideMainWindowAtStartup="false" tooltipText="" balloonTipText="Hello World!" hideTrayIconWhenMainWindowShown="false" turnOnMode="OnMinimize">
      <trayIcon>C:\Sample.ico</trayIcon>
      <fontSettings fontName="Helvetica" fontSize="8">
        <fontColor />
      </fontSettings>
      <contextMenuSettings displayAlwaysOnTopMenuItem="true" displayRunAtSystemsStartupMenuItem="true" displayShowInTaskbarMenuItem="true" displayAboutMenuItem="true" displayHelpMenuItem="true" displayExitMenuItem="true" />
    </trayApplicationBehaviourSettings>
  </globalApplicationSettings>
</configuration>

6. 高级主题

现在我们已经了解了如何通过编程方式以及配置文件来配置托盘应用程序。在本节中,我们将深入探讨一种更高级的以编程方式自定义托盘应用程序的方法,这是一种很少使用的方法。

6.1 AfterNotifyIconConstructed() 方法

在派生类中实现时,在框架构造 ChoNotifyIcon 对象后执行。在此方法中,您可以根据需要操作大多数 ChoNotifyIcon 属性。有关更多信息,请参阅 ChoNotidyIcon 类帮助。除了通过此对象公开的标准属性外,它还提供了一些额外的辅助方法供您使用。

清单 6.1.1 AfterNotifyIconContructed() 示例

[ChoApplicationHost]
public class ChoAppHost : ChoApplicationHost
{
    protected override void ApplyGlobalApplicationSettingsOverrides(ChoGlobalApplicationSettings obj)
    {
        obj.TrayApplicationBehaviourSettings.TurnOn = true;
    }

    public override object MainWindowObject
    {
        get
        {
            return new MainWindow();
        }
    }

    protected override void AfterNotifyIconConstructed(Cinchoo.Core.Windows.Forms.ChoNotifyIcon ni)
    {
        ni.Text = "AfterConstruct";
        ni.ShowText("R");
    }
}

6.2 Console 模式运行

使用 Cinchoo 框架创建的应用程序可以作为控制台、Windows、托盘或服务应用程序运行。统一的接口可以在应用程序之间切换模式。成功开发托盘应用程序后,请在命令行参数中传递 /#AM:Console 以将您的托盘应用程序作为控制台模式运行。

清单 6.2.1 在控制台模式下运行托盘应用程序

>HelloWorldTrayApp /#AM:Console

7. ChoNotifyIcon 类

指定一个在通知区域创建图标的组件。此类不能被继承。通知区域中的图标是后台运行进程的快捷方式,例如病毒防护程序或音量控制。这些进程没有自己的用户界面。NotifyIcon 类提供了一种编程实现此功能的方式。Icon 属性定义了出现在通知区域的图标。图标的弹出菜单通过 ContextMenu 属性进行寻址。ChoNotifyIcon 为所有更改提供属性通知。

7.1 方法

7.1.1 ShowText() 重载

显示文本而不是托盘中的图标。

7.1.2 SetAnimationClip() 重载

设置将在托盘中显示的动画剪辑。设置完剪辑后,可以通过调用 StartAnimation 和 StopAnimation 方法来控制动画。

7.1.3 ShowBalloonTip() 重载

在指定的时间段内,在任务栏中显示带有指定标题、文本和图标的气球提示。

7.1.4 StartAnimation() 方法

开始显示动画。这需要在调用 SetAnimationClip() 方法设置剪辑后调用。

7.1.5 StopAnimation() 方法

停止通过 StartAnimation 方法开始的动画。

7.2 属性

7.2.1 BalloonTipText 属性

获取或设置与 ChoNotifyIcon 关联的气球提示中显示的文本。

7.2.2 BalloonTipTitle 属性

获取或设置显示在 ChoNotifyIcon 上的气球提示的标题。

7.2.3 ContextMenu 属性

获取或设置与 ChoNotifyIcon 关联的快捷菜单。

7.2.4 ContextMenu 属性

获取或设置图标的快捷菜单。

7.2.5 ContextMenuStrip 属性

获取或设置与ChoNotifyIcon 关联的快捷菜单。

7.2.6 Icon 属性

获取或设置当前图标。

7.2.7 Tag 属性

获取或设置一个包含有关ChoNotifyIcon 数据的对象。

7.2.8 Text 属性

获取或设置当鼠标指针停留在通知区域图标上时显示的工具提示文本。

7.2.9 Visible 属性

获取或设置一个值,该值指示图标在任务栏的通知区域中是否可见。

7.3 事件

7.3.1 BalloonTipClicked 事件

气球提示被单击时发生。

7.3.2 BalloonTipClosed 事件

气球提示被用户关闭时发生。

7.3.3 BalloonTipShown 事件

气球提示显示在屏幕上时发生。

7.3.4 Click 事件

用户单击通知区域中的图标时发生。

7.3.5 DoubleClick 事件

用户双击任务栏通知区域中的图标时发生。

7.3.6 MouseClick 事件

用户用鼠标单击 System.Windows.Forms.NotifyIcon 时发生。

7.3.7 MouseDoubleClick 事件

用户用鼠标双击 System.Windows.Forms.NotifyIcon 时发生。

7.3.8 MouseDown 事件

当用户在任务栏通知区域的图标上按下鼠标按钮时发生。

7.3.9 MouseMove 事件

当用户将鼠标移动到任务栏通知区域的图标上时发生。

7.3.8 MouseUp 事件

当用户在任务栏通知区域的图标上释放鼠标按钮时发生。

 

请收藏本文,更多更新即将到来

© . All rights reserved.