C#成神之路 <21> 窗体操作相关

C#成神之路 专栏收录该内容
23 篇文章 0 订阅

1、窗体跳转相关
如同上文多窗口文档一样,关于多窗体跳转示例:此处引用主窗体,进行相关跳转。利用Hide对主窗体进行隐藏,并且将主窗体作为一个参数传递给子窗体内相关函数,从而使得没有冗余窗体。
frmMain函数代码:

using System;
using System.Windows.Forms;
using 窗体递进测试;//注意必须调用命名空间从而可以调用子窗体类。
public class frmMain : Form
{
    private Button btnClose;
    private Button btnGo;
    #region Windows code
    private void InitializeComponent()
    {
            this.btnGo = new System.Windows.Forms.Button();
            this.btnClose = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // btnGo
            // 
            this.btnGo.Location = new System.Drawing.Point(101, 128);
            this.btnGo.Name = "btnGo";
            this.btnGo.Size = new System.Drawing.Size(75, 23);
            this.btnGo.TabIndex = 0;
            this.btnGo.Text = "Go";
            this.btnGo.UseVisualStyleBackColor = true;
            this.btnGo.Click += new System.EventHandler(this.button1_Click);
            // 
            // btnClose
            // 
            this.btnClose.Location = new System.Drawing.Point(101, 174);
            this.btnClose.Name = "btnClose";
            this.btnClose.Size = new System.Drawing.Size(75, 23);
            this.btnClose.TabIndex = 1;
            this.btnClose.Text = "Close";
            this.btnClose.UseVisualStyleBackColor = true;
            this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
            // 
            // frmMain
            // 
            this.BackColor = System.Drawing.SystemColors.MenuHighlight;
            this.ClientSize = new System.Drawing.Size(284, 261);
            this.Controls.Add(this.btnClose);
            this.Controls.Add(this.btnGo);
            this.ForeColor = System.Drawing.SystemColors.InactiveCaptionText;
            this.Location = new System.Drawing.Point(500, 500);
            this.Name = "frmMain";
            this.Text = "Main";
            this.Load += new System.EventHandler(this.frmMain_Load);
            this.ResumeLayout(false);

    }
    #endregion
    //#region是C# 预处理器指令。 
    //#region 使您可以在使用 Visual Studio
    //代码编辑器的大纲显示功能时指定可展开或折叠的代码块。
    public frmMain()
    {
        InitializeComponent();
    }

    public static void Main()
    {
        frmMain main = new frmMain();
        Application.Run(main);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form1 myForm1 = new Form1(this);
        //点击Go键之后,就可以完成相关的窗体创建。
        myForm1.Show();
        //在屏幕上打出相关窗体。

    }

    private void btnClose_Click(object sender, EventArgs e)
    {
        Close();
        //关闭主窗体。
    }

    private void frmMain_Load(object sender, EventArgs e)
    {

    }
}

子窗体代码:


namespace 窗体递进测试
{
    public partial class Form1 : Form
    {
    //在类中存储一个窗体变量,为了存储主窗体
        Form f = new Form();

        public Form1(frmMain F1)
        {
            InitializeComponent();
            F1.Hide();
            //主窗体不能关闭,只能对其进行隐藏。
            f = F1;
            //将主窗体保存到f中去。
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
           this.Close();          
           f.Show();      
           //当退出子窗体的时候,关闭子窗体,将f中保存的主窗体在屏幕上打出。   
        }




    }
}

以上是博主提供的关于窗体跳转的方法,有其他更好的方法欢迎交流。

2、窗体和对话框

Application 类属于System.Windows.Forms 命名空间。
Application 类具有用于启动和停止应用程序和线程以及处理 Windows 消息的方法。
(1)如何在代码中打开一个新窗体
Form2 fm = new Form2();
fm.Show(); //或者fm.ShowDialog();
(2)如何在代码中关闭一个窗体
用法1:fm.Close();
用法2:this.Close();
用法3:Application.OpenForms[“Form1”].Close();
(3)如何隐藏一个打开的窗体
(1)隐藏当前窗体:this.Hide();
(2)隐藏其它窗体:Application.OpenForms[“Form1”].Hide();
(4)如何重新显示隐藏的窗体
(1)显示当前窗体:this.Show();
(2)显示其它窗体:Application.OpenForms[“Form1”].Show();
关于Application的测试:C#中,Application.OpenForms;是所有已经.Show();过之后的窗体的集体。如果没有show过,就会严重错误。

3、关于相关窗体的重要属性
(1)窗体常用属性以及修改
Name:获取或设置窗体的名称,代码中通过该属性来访问窗体。
BackColor:获取或设置窗体的背景色。
ForeColor:获取或设置窗体上文本的前景色。
Location:获取或设置以屏幕坐标表示的代表窗体左上角的坐标位置。
Size:指定窗体的高度和宽度。
Text:设置控件上所要显示的文本,如标签、按钮和复选框等控件上的文字。
StartPostion:获取或设置运行时窗体的起始位置,一般在构造函数中设置此属性。

设置窗体属性的途径有2种:
在设计模式下利用【属性】窗口设置窗体属性。
在代码编辑模式下设置窗体属性。

this.StartPosition = FormStartPosition.Manual;
this. Location = new Point(screenX, screenY);

通过设置窗体的【ControlBox】属性为“True”或者“Fals
e”,可以控制是否显示最大化、最小化以及关闭按钮。除此之
外,还可以通过设置窗体的【FormBorderStyle】属性控制窗体
的边框样式.

(2)关于对话框的应用
对话框用于与用户交互和检索信息。
对话框分为标准对话框和自定义对话框。

1.MessageBox对话框
调用MessageBox类的静态Show方法来显示消息对话框。返回值是MessageBoxResult枚举的值,其中每个值都等同于消息对话框可以显示的按钮之一。

Show方法提供了多种重载形式,常用的重载形式有:

public static DialogResult Show(string text);
public static DialogResult Show(string text, string caption);
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon);

Text:在消息框中显示的文本。
caption:在消息框的标题栏中显示的文本。
buttons:MessageBoxButtons枚举值之一,指定在消息框中显示哪些按钮。枚举值有OK、OKCancel、YesNoCancel和YesNo。
icon:MessageBoxIcon枚举值之一,指定在消息框中显示哪个图标。枚举值有None(不显示图标)、Hand(手形)、Question(问号)、Exclamation(感叹号)、Asterisk(星号)、Stop(停止)、Error(错误)、Warning(警告)和Information(信息)。

Show方法的返回值是DialogResult枚举值之一。DialogResult枚举值有:None(消息框未返回值)、OK、Cancel、Yes和No。

2.ColorDialog:提供颜色选择。
方法:ShowDialog() 返回值:DialogResult类型

 ColorDialog k = new ColorDialog();
 k.ShowDialog();

3.FontDialog:提供字体选择。
方法:ShowDialog() 返回值:DialogResult类型

ColorDialog colorDlg = new ColorDialog( );
if (colorDlg.ShowDialog( ) == DialogResult.OK)
{
  textBox1.ForeColor = colorDlg.Color;
 }

4、自定义对话框
自定义窗体对话框的设计方法与设计一般窗体基本相同,不同之处是还要对自定义窗体对话框作如下处理:
将窗体的【FormBorderStyle】属性更改为“FixedDialog”
将窗体的【MaximizeBox】属性、【MinimizeBox】属性和【ControlBox】属性设置为“False”
在窗体上放一个“确定”按钮,一个“取消”按钮。然后将窗体的【AcceptButton】属性设置为“确定”按钮,【CancelButton】属性设置为“取消”按钮。
在按钮事件中,设置DialogResult类型的返回值,以便让对话框隐藏起来

(3)控件和组件

相同点:均指可重复使用并且可以和其他对象进行交互的对象
区别:在于控件提供了用户界面功能,而组件不提供用户界面。每个控件都是一个组件,但只有提供用户界面功能的组件才称为控件。
常用基本属性
1) (Name):指定控件的名称,它是控件在当前应用程序中的唯一标识,代码通过该属性来访问控件
2) Enabled:决定控件是否可用,取值为true时可用,取值为false时不可用
3)Anchor属性:保持控件与边框的距离不变
4)Dock属性:让控件始终紧靠边框

控件透明处理
将窗体中控件的背景色设置为“Transparent”,则该控件相对于其父容器是透明的。

控件的对齐方式和显示顺序
(1)当控件的【AutoSize】属性为“False”时,利用控件的【Size】属性可以精确控制控件
(2)多个控件,可以按住键同时选中多个控件,然后利用“布局”快捷工具栏中的快捷方式可以快速让各控件对齐。

控件的焦点顺序调整
(1)利用布局工具栏中的“键顺序”按钮,可以在设计界面下调整焦点顺序
(2)如果希望在代码中让焦点在运行开始就处于某个控件上,在窗体的Shown事件中调用Focus方法来实现。
textBox1.Focus( );

(4)控件的锚定和停靠
1.Anchor属性
【Anchor】属性定义控件的定位点位置。当控件锚定到某个窗体时,如果用户调整该窗体的大小,该控件将维持它与定位点位置之间的距离不变。
例如:如果一个TextBox控件锚定于窗体的左、右和底边缘,那么当用户调整该窗体的大小时,该TextBox控件将在水平方向上自动调整大小,以确保TextBox控件与该窗体右边和左边的距离不变。
2 .Dock属性
【Dock】属性的用途是使控件与窗体边缘对齐。此属性指定控件在窗体中的驻留位置。
【Dock】属性设置为下列值:
(1)Left 停靠到窗体的左侧。
(2) Right 停靠到窗体的右侧。
(3) Top 停靠到窗体的顶部。
(4) Bottom 停靠到窗体底部。
(5) Fill 占据窗体中的所有剩余空间。
(6) None 不在任何位置停靠,它显示在由Location属性指定的位置。

3、键盘鼠标事件

事件:是指由系统事先设定的、能被控件识别和响应的动作.
事件驱动: Windows应用程序的设计是基于事件驱动的。事件驱动指程序不是完全按照代码文件中代码的排列顺序从上到下依次执行,而是根据用户操作触发相应的事件来执行对应的代码。
一个控件可以响应多个事件,设计Windows应用程序的很多工作就是为各个控件编写需要的事件代码,
1.鼠标事件
Click 单击鼠标左键时触发
MouseDoubleClick 双击鼠标左键时触发
MouseEnter 鼠标进入控件可见区域时触发
MouseMove 鼠标在控件区域内移动时触发
MouseLeave 鼠标离开控件可见区域时触发
2.键盘事件
KeyDown 按下键盘上某个键时触发
KeyUp 释放键盘上的按键时触发
KeyPress 在KeyDown之后KeyUp之前触发,非字符键不会触发该事件。
3.注意
(1)KeyPress事件或鼠标事件处理程序没有提供对应的参数,判断键盘输入稍微有点麻烦,所以一般在KeyDown事件或者KeyUp事件中对用户按键进行处理
(2)如果希望使键盘消息在到达窗体上的任何控件之前先被窗体接收,需要将窗体的KeyPreview属性设置为true。

控件鼠标事件和键盘事件处理
MouseEnter、MouseLeave、MouseClick
KeyDown、KeyUp
背景音乐播放
SoundPlayer类,播放*.WAV格式的音乐文件
常用方法:Play、PlayLooping、Stop
背景音乐添加方法:
先加入using System.Media;命名空间,然后在窗体的初始化Load加载事件中写如下代码:
SoundPlayer sp = new SoundPlayer(“音乐文件路径”);//必须是带.wav扩展名的音频文件
sp.PlayLooping();//循环播放
备注:音乐文件路径一般放在项目中的Bin目录下,就可以直接指定音乐文件名称!

4、分组控件
分组控件:用于对不同的控件进行分组
Panel控件(Panel控件不能显示标题但可以有滚动条)
GroupBox控件(GroupBox控件可显示标题但不能显示滚动条。)

ToolTip组件用于在用户指向控件时显示相应的提示信息。
属性窗口中设置提示信息
在代码中利用ToolTip组件的SetToolTip方法直接设置其他控件的操作提示信息。

public void SetToolTip(
    Control control,
    string caption
)

control
类型:System.Windows.Forms.Control
要将工具提示文本与其关联的 Control。
caption
类型:System.String
指针位于控件上方时要显示的工具提示文本。

下面的代码示例创建一个 ToolTip 类的实例,并将该实例与创建它时所在的 Form 相关联。 代码随后初始化延迟属性 AutoPopDelay、InitialDelay 和 ReshowDelay。 另外,ToolTip 类的实例将 ShowAlways 属性设置为 true,以使工具提示文本始终显示而不管窗体是否活动。 最后,该示例将工具提示文本与窗体上的 Button 和 CheckBox 这两个控件关联。 此示例要求其中定义的方法位于 Form 之内,而该窗体应包含一个名为 button1 的 Button 控件和一个名为 checkBox1 的 CheckBox 控件,并且要求从 Form 的构造函数中调用该方法。

 private void Form1_Load(object sender, System.EventArgs e)
      {
         // Create the ToolTip and associate with the Form container.
         ToolTip toolTip1 = new ToolTip();

         // Set up the delays for the ToolTip.
         toolTip1.AutoPopDelay = 5000;
         toolTip1.InitialDelay = 1000;
         toolTip1.ReshowDelay = 500;
         // Force the ToolTip text to be displayed whether or not the form is active.
         toolTip1.ShowAlways = true;

         // Set up the ToolTip text for the Button and Checkbox.
         toolTip1.SetToolTip(this.button1, "My button1");
         toolTip1.SetToolTip(this.checkBox1, "My checkBox1");
      }

对ToolTip进行了充分的解释,从而达到完美注释。

错误提示组件(ErrorProvider)
ErrorProvider组件可以对窗体或控件上的用户输入进行验证。
用MessageBox消息框,一旦用户关闭了消息框,就再也看不见错误信息
ErrorProvider组件则是在相关控件(如文本框)旁显示一个闪烁的错误图标,当用户将鼠标指针放在该错误图标上时,将出现显示错误信息字符串的工具提示。

定时组件(Timer)
功能:主要用于设置某个时间间隔,并在每次到达设置的时间间隔时,触发指定的事件。
该组件常用的属性是【Enabled】属性和【Interval】属性。
【Enabled】属性表示是否启用计时,这是一个bool类型的属性,false表示停止计时,true表示开始计时;同时,该组件还提供了Start方法和Stop方法,其作用与设置【Enabled】属性的作用相同。
【Interval】属性表示触发Tick事件的间隔时间,以ms为计时单位,默认为100ms。

文本控件
1.文本框(TextBox)控件常用的基本属性
1) Text:表示文本框中显示的内容。
2) MaxLength:表示用户可以在文本框控件中最多键入的字符数,默认值为32767个字符。注意,由于使用的是Unicode字符,所以对中文和英文的字符计数方法是相同的,即一个英文字符的长度为1,一个汉字字符的长度也是1。
3) Multiline:表示是否可以包含多行内容。
4) PasswordChar:用于指定在屏蔽TextBox控件中输入的密码字符时所要使用的符号。
TextBox控件常用的基本事件
TextChanged:表示文本框中的当前内容(Text属性值)更改时触发的操作。

2.MaskedTextBox:
主要作用
控制输入文本的格式。如果输入的内容不满足规定的格式,
则拒绝用户输入。
常用属性
【Mask】属性,用于设置当前掩码文本框输入字符的格式。

3.RichTextBox:
主要功能是进行高级文本输入和编辑,作为一般的文本输入,其属性、事件与TextBox控件的属性、事件大致相同。
它可以完成与Microsoft Word相似的复杂文字处理功能,比如改变文本、段落的显示格式,在文本中查找特定字符和字符串等,可以保存图像内容。
常用属性
(1)SelectionFont
表示当前选中文本或所要输入文本的字体、大小、效果等
(2)SelectionColor
表示当前选中文本或所要输入文本的颜色

列表类控件(ListBox控件、ComboBox控件)
(1)ListBox(列表框)控件和ComboBox(下拉框)控件均用于显示一组条目,以便操作者从中选择一条或者多条信息,并对其进行相应的处理。
(2)常用的属性和方法
Items
SelectedIndex、SelectedItem
SelectedItems
Count
Items.Add
Items.AddRange
Items.Remove、Items.RemoveAt
Items.Clear

ListBox控件的其他属性
MutiColumn属性:决定是否可以以多列的形式显示各项。
SelectionMode属性:选择列表项的方式。
None:不能选择任何条目;
One:每次只能选择一个条目;
MultiSimple:每次可以选择一个条目或者多个条目,单击对应条目即被选中,再次单击取消选中;
MultiExtended:每次可以选择一个条目或者多个条目,仅用鼠标单击各条目时,每次选择一个条目;使用组合键(如或键)配合时,可以选择多个条目。
HorizontalScrollbar属性:获取或设置一个值(true或者false),该值指示是否在控件中显示水平滚动条。

ComboBox控件的其他属性
ComboBox控件是TextBox和ListBox组合出来的结果。
该控件包含了两个部分:顶部是一个允许用户键入列表项的文本框(TextBox)和文本框右边带有向下箭头的按钮组合出来的结果
DropDownStyle属性:表示组合框的显示样式,它有3种选择形式。
① Simple:同时显示文本框和列表框,文本框可以被编辑。
② DropDown:只显示文本框,隐藏列表框,且文本框可以被编辑。
③ DropDownList:只显示文本框,隐藏列表框,但文本框不可以被编辑。
MaxDropDownItems属性:设置打开列表框时所显示的最大条目数。

复选框控件
CheckBox控件
(1).三种状态
(2).常用属性
Checked属性:true,false
CheckState属性 :Checked、Unchecked和Indeterminate
ThreeState属性
Text属性
(3).常用事件
CheckedChanged事件

CheckedListBox控件
适用场合:当窗体中所需的复选框选项较多时,或者需要在运行时动态地决定有哪些选项时,使用此控件比较方便。
常用属性、方法
(1) Items属性:项的集合。(2) Count属性:项的数目。(3) CheckedItems属性:获取选中项的集合。(4) CheckedIndices属性:获取选中项索引的集合。
(4) MultiColumn属性:true或false。
(5) GetItemChecked方法:获取指定项是否被选中 。(6) SetItemChecked方法:设置某个复选框的选中状态。

RadioButton控件
1.特点:(1)单选(2)以各自所在的容器来划分组,如果在一个窗体上创建多个单选按钮组,可以使用GroupBox或者Panel控件作为容器。
2. 与CheckBox相比,RadioButton控件除了是单选外,其他用法与CheckBox用法相同。

日期选择控件
1. DateTimePicker控件用于对日期(年月日)和时间(时分秒)进行处理,该控件提供一个可选择的日期范围,供用户选择/编辑日期或时间。
2.常用属性1) Text属性2) Value属性3) Format属性
4)ShowUpDown属性:如果希望利用该控件仅让用户编辑时间(时分秒),需要将它的【ShowUpDown】属性设置为“True”,并将其【Format】属性设置为“Time”。
5)CustomFormat属性:指定日期时间格式字符串

图像操作类控件
功能:PictureBox控件用于显示图像或者GIF动画。
常用属性
1) Image:获取或设置显示的图像
2) SizeMode:
AutoSize:自动调整控件PictureBox的大小为所包含的图片大小。CenterImage:将控件的中心和图片的中心对齐显示。如果控件比图片大,则图片将居中显示;如图片大,则图片将居中,外边缘将被裁。Normal:图片被置于控件的左上角。如果图片大,则超出部分被剪裁。StretchImage:控件中的图像被拉伸或收缩,完全占满控件。Zoom:控件中的图片按照比例拉伸或收缩,占满控件的长度或高度。 3) Parent:(仅代码方式下可用):获取或设置父级控件

//加载
if (pictureBox1.Image != null)
{
    pictureBox1.Image.Dispose( );//及时释放资源
}
string fileName= Application.StartupPath + @"\MyImage.gif";
pictureBox1.Image = Image.FromFile(fileName);
//清除图片
if (pictureBox1.Image != null)
{
    pictureBox1.Image.Dispose( );//及时释放资源
    pictureBox1.Image = null;
}

ImageList控件:图像列表控件。
功能:ImageList组件用于保存一组图像,然后供其他控件显示一组图像中的某一个图像,例如 ListView控件、TreeView控件等。
常用属性:
【Images】属性:包含关联的控件将要使用的图片。
【ImageIndex】属性:每个单独的图像可通过其索引值或其键值来访问
【ImageKey】属性:键值

MenuStrip控件
MenuStrip控件的常用属性
(1) Dock:指示菜单栏在窗体中停靠的位置,默认值为Top。
(2) Items:菜单栏上显示的各菜单项。
MenuItem菜单项的常用属性(1) DisplayStyle:菜单项上的显示样式。(2) Image:指定在该菜单项上显示的图标。(在C:\Program Files\Microsoft Visual Studio 8\Common7\VS2005ImageLibrary下有一个.zip文件,内有各种动画文件、图像文件和图标文件,例如展开后在目录\bitmaps\commands\pngformat下有打开、保存等图像。)(3) ShortcutKeys:快捷键。
MenuItem菜单项的常用事件Click事件

ContextMenuStrip控件
用于制作右键快捷菜单
使用该控件的关键是将需要显示快捷菜单的控件的ContextMenuStrip属性设置为添加的ContextMenuStrip控件对象。
除了是右键弹出外,其他用法与MenuStrip相同。

ToolStrip控件
ToolStrip控件的作用是为Windows应用程序添加工具栏。工具栏一般是由多个按钮、标签等排列组成,通过这些项可以快速地执行程序提供的一些常用命令,比使用菜单选择更加方便快捷。
ToolStrip控件的常用属性和事件与MenuStrip控件基本相同,各项的属性和事件与MenuStrip控件中菜单项基本相同。

StatusStrip控件
StatusStrip控件的作用是向窗体中添加状态栏,状态栏一般由文本提示信息组成。
StatusStrip控件一般由ToolStripStatusLabel对象组成,每个这样的对象都可以显示文本、图标或者同时显示文本和图像。

列表视图控件(ListView)
ListView(列表视图)控件用列表的形式显示一组数据,每项数据都是一个ListItem类型的对象,称之为项,同时每个项还可能会有多个描述的子项。
一般使用ListView来显示分类查询及其详细信息。
常用属性:
MultiSelect属性
Sorting属性
Items属性
View属性
ImageIndex属性

树形视图控件(TreeView)
(1)设置TreeView控件的ImageList属性为想要使用的现有ImageList控件。例如:

    treeView1.ImageList = imageList1;

(2)设置节点的ImageIndex和SelectedImageIndex属性。
ImageIndex属性确定正常和展开状态下的节点显示的图像,SelectedImageIndex属性确定选定状态下的节点显示的图像。例如:

    treeView1.SelectedNode.ImageIndex = 0;
    treeView1.SelectedNode.SelectedImageIndex = 1;

选项卡控件(TabControl)
功能:
TabControl控件用于创建带有多个选项卡(TabPages)的窗口,每个选项卡都相当于一个对话窗口容器,可以在其中独立地存放其他控件对象。
常用属性:
ImageList属性:获取或设置当前TabControl控件中的各个标签页使用的图标集合。
MultiLine属性:获取或设置是否可以创建多行选项卡。
TabPages属性:获取该选项卡控件中选项卡页的集合。

面板复合控件
功能:
(1)SplitContainer控件是由两个Panel面板和一个Split拆分条组成的复合体,两个Panel之间的拆分条可以拖动。
(2)多个SplitContainer控件可嵌套

任务栏图标组件(NotifyIcon)
功能:
NotifyIcon组件主要用于显示通知区域中的图标。
NotifyIcon是一个比较特殊的组件,只有运行时才能显示。
常用属性:
【Icon】属性设置出现在状态区域的图标。
【Visible】属性控制是否让图标显示出来。
【Text】属性来指定将鼠标指针放置在图标上时显示的提示信息。

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();
    }
}
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值