指定在状态区域创建图标的组件

指定在状态区域创建图标的组件。不能继承此类。
有关此类型所有成员的列表,请参阅 NotifyIcon 成员。
System.Object
   System.MarshalByRefObject
      System.ComponentModel.Component
         System.Windows.Forms.NotifyIcon
[Visual Basic]
NotInheritable Public Class NotifyIcon
   Inherits Component
[C#]
public sealed class NotifyIcon : Component
[C++]
public __gc __sealed class NotifyIcon : public Component
[JScript]
public class NotifyIcon extends Component
线程安全
此类型的所有公共静态(Visual Basic 中为 Shared)成员对多线程操作而言都是安全的。但不保证任何实例成员是线程安全的。
备注
状态区域中的图标是一些进程的快捷方式,这些进程在计算机后台运行,如防病毒程序或音量控制。这些进程不会具有自己的用户界面。NotifyIcon 类提供了编写此功能的方法。Icon 属性定义显示在状态区域中的图标。图标的弹出菜单由 ContextMenu 属性确定。Text 属性分配工具提示文本。要在状态区域中显示图标,必须将 Visible 属性设置为 true。
示例
[Visual Basic, C#, C++] 下面的示例说明了如何使用 NotifyIcon 类来为通知区域中的应用程序显示一个图标。此示例说明了如何设置 Icon、ContextMenu、Text 和 Visible 属性以及如何处理 DoubleClick 事件。带有 Exit 项的 ContextMenu 被分配给 NotifyIcon.ContextMenu 属性,从而可以使用户关闭应用程序。当发生 DoubleClick 事件时,将通过调用 Form.Activate 方法激活该应用程序窗体。
[Visual Basic]
Imports System
Imports System.Drawing
Imports System.Windows.Forms

Public NotInheritable Class Form1
    Inherits System.Windows.Forms.Form

    Private contextMenu1 As System.Windows.Forms.ContextMenu
    Friend WithEvents menuItem1 As System.Windows.Forms.MenuItem
    Friend WithEvents notifyIcon1 As System.Windows.Forms.NotifyIcon
    Private components As System.ComponentModel.IContainer

    <System.STAThread()> _
    Public Shared Sub Main()
        System.Windows.Forms.Application.Run(New Form1)
    End Sub 'Main

    Public Sub New()

        Me.components = New System.ComponentModel.Container
        Me.contextMenu1 = New System.Windows.Forms.ContextMenu
        Me.menuItem1 = New System.Windows.Forms.MenuItem

        ' Initialize contextMenu1
        Me.contextMenu1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() _
                            {Me.menuItem1})

        ' Initialize menuItem1
        Me.menuItem1.Index = 0
        Me.menuItem1.Text = "E&xit"

        ' Set up how the form should be displayed.
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 266)
        Me.Text = "Notify Icon Example"

        ' Create the NotifyIcon.
        Me.notifyIcon1 = New System.Windows.Forms.NotifyIcon(Me.components)

        ' The Icon property sets the icon that will appear
        ' in the systray for this application.
        notifyIcon1.Icon = New Icon("appicon.ico")

        ' The ContextMenu property sets the menu that will
        ' appear when the systray icon is right clicked.
        notifyIcon1.ContextMenu = Me.contextMenu1

        ' The Text property sets the text that will be displayed,
        ' in a tooltip, when the mouse hovers over the systray icon.
        notifyIcon1.Text = "Form1 (NotifyIcon example)"
        notifyIcon1.Visible = True
    End Sub 'New
   
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        ' Clean up any components being used.
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub 'Dispose

    Private Sub notifyIcon1_DoubleClick(Sender as object, e as EventArgs) handles notifyIcon1.DoubleClick
        ' Show the form when the user double clicks on the notify icon.

        ' Set the WindowState to normal if the form is minimized.
        if (me.WindowState = FormWindowState.Minimized) then _
            me.WindowState = FormWindowState.Normal

        ' Activate the form.
        me.Activate()
    end sub

    Private Sub menuItem1_Click(Sender as object, e as EventArgs) handles menuItem1.Click
        ' Close the form, which closes the application.
        me.Close()
    end sub

End Class 'Form1
[C#]
using System;
using System.Drawing;
using System.Windows.Forms;

public class Form1 : System.Windows.Forms.Form
{
    private System.Windows.Forms.NotifyIcon notifyIcon1;
    private System.Windows.Forms.ContextMenu contextMenu1;
    private System.Windows.Forms.MenuItem menuItem1;
    private System.ComponentModel.IContainer components;

    [STAThread]
    static void Main()
    {
        Application.Run(new Form1());
    }

    public Form1()
    {
        this.components = new System.ComponentModel.Container();
        this.contextMenu1 = new System.Windows.Forms.ContextMenu();
        this.menuItem1 = new System.Windows.Forms.MenuItem();

        // Initialize contextMenu1
        this.contextMenu1.MenuItems.AddRange(
                    new System.Windows.Forms.MenuItem[] {this.menuItem1});

        // Initialize menuItem1
        this.menuItem1.Index = 0;
        this.menuItem1.Text = "E&xit";
        this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click);

        // Set up how the form should be displayed.
        this.ClientSize = new System.Drawing.Size(292, 266);
        this.Text = "Notify Icon Example";

        // Create the NotifyIcon.
        this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);

        // The Icon property sets the icon that will appear
        // in the systray for this application.
        notifyIcon1.Icon = new Icon("appicon.ico");

        // The ContextMenu property sets the menu that will
        // appear when the systray icon is right clicked.
        notifyIcon1.ContextMenu = this.contextMenu1;

        // The Text property sets the text that will be displayed,
        // in a tooltip, when the mouse hovers over the systray icon.
        notifyIcon1.Text = "Form1 (NotifyIcon example)";
        notifyIcon1.Visible = true;

        // Handle the DoubleClick event to activate the form.
        notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick);

    }

    protected override void Dispose( bool disposing )
    {
        // Clean up any components being used.
        if( disposing )
            if (components != null)
                components.Dispose();           

        base.Dispose( disposing );
    }

    private void notifyIcon1_DoubleClick(object Sender, EventArgs e)
    {
        // Show the form when the user double clicks on the notify icon.

        // Set the WindowState to normal if the form is minimized.
        if (this.WindowState == FormWindowState.Minimized)
            this.WindowState = FormWindowState.Normal;

        // Activate the form.
        this.Activate();
    }

    private void menuItem1_Click(object Sender, EventArgs e) {
        // Close the form, which closes the application.
        this.Close();
    }
}
[C++]
#using <mscorlib.dll>
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;

public __gc class Form1 : public System::Windows::Forms::Form {
private:
   System::Windows::Forms::NotifyIcon*  notifyIcon1;
   System::Windows::Forms::ContextMenu*  contextMenu1;
   System::Windows::Forms::MenuItem*  menuItem1;
   System::ComponentModel::IContainer*  components;

public:
   Form1() {
      this->components = new System::ComponentModel::Container();
      this->contextMenu1 = new System::Windows::Forms::ContextMenu();
      this->menuItem1 = new System::Windows::Forms::MenuItem();

      // Initialize contextMenu1

      System::Windows::Forms::MenuItem* temp0 [] = {this->menuItem1};

      this->contextMenu1->MenuItems->AddRange(temp0);

      // Initialize menuItem1
      this->menuItem1->Index = 0;
      this->menuItem1->Text = S"E&xit";
      this->menuItem1->Click += new System::EventHandler(this, menuItem1_Click);

      // Set up how the form should be displayed.
      this->ClientSize =  System::Drawing::Size(292, 266);
      this->Text = S"Notify Icon Example";

      // Create the NotifyIcon.
      this->notifyIcon1 = new System::Windows::Forms::NotifyIcon(this->components);

      // The Icon property sets the icon that will appear
      // in the systray for this application.
      notifyIcon1->Icon = new System::Drawing::Icon(S"appicon.ico");

      // The ContextMenu property sets the menu that will
      // appear when the systray icon is right clicked.
      notifyIcon1->ContextMenu = this->contextMenu1;

      // The Text property sets the text that will be displayed,
      // in a tooltip, when the mouse hovers over the systray icon.
      notifyIcon1->Text = S"Form1 (NotifyIcon example)";
      notifyIcon1->Visible = true;

      // Handle the DoubleClick event to activate the form.
      notifyIcon1->DoubleClick += new System::EventHandler(this, notifyIcon1_DoubleClick);

   }

protected:
   void Dispose(bool disposing) {
      // Clean up any components being used.
      if (disposing)
         if (components != 0)
            components->Dispose();

      Form::Dispose(disposing);
   }

private:
   void notifyIcon1_DoubleClick(Object* Sender, EventArgs* e) {
      // Show the form when the user double clicks on the notify icon.

      // Set the WindowState to normal if the form is minimized.
      if (this->WindowState == FormWindowState::Minimized)
         this->WindowState = FormWindowState::Normal;

      // Activate the form.
      this->Activate();
   }

private:
   void menuItem1_Click(Object* Sender, EventArgs* e) {
      // Close the form, which closes the application.
      this->Close();
   }
};

[STAThread]
int main() {
   Application::Run(new Form1());
}

posted on 2006-07-25 10:25  欧阳  阅读(311)  评论(0编辑  收藏  举报