C#.net_经典实例400个

更新时间:2023-04-06 00:23:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1 / 210

一共470多例winform 界面特效的源码。

窗体与界面设计

1.1 菜单应用实例 菜单是程序开发中经常使用的界面元素,合理利用菜单不但可以使用

户非常方便的操作程序的功能,更能使效率提高,适应人性化的潮流。下面通过几个应用实例,介绍菜单设计的方法和技术。

实例001 带历史信息的菜单

实例说明

在开发图纸管理软件时,要求在菜单上记录用户最近打开的档案或图纸,以方便下次使用。如图1.1

所示,单击“文件”菜单下的“打开文件”子菜单,打开需要查阅的图纸。下次运行该软件时,上次打开的文件名记录到“文件”菜单的历史菜单中,选择该菜单,即可打开相应的图纸文件。

技术要点

要实现保存最近打开的文件,可以将在菜单中最近打开文件的文件名和路径保存到事先建立的*.ini 文件中,系统启动时读取*.ini 中的数据建立数组菜单,即可实现显示历史菜单的功能。

注意:要建立一个带历史信息的菜单,必须首先添加一个MenuStrip 菜单控件,并将主窗体的IsMdiContainer 属性设为True 。

实现过程

(1)创建一个项目,将其命名为Ex01_01,默认窗体为Form1。

(2)从工具箱中向Form1窗体添加MenuStrip控件,同时向窗体添加Open FileDialog控件。创建一个“文件”主菜单,在其下面创建打开、关闭所有、退出等菜单选项。

(3)主要程序代码。

将打开文件路径写入INI文件的实现代码如下:

private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)

{

openFileDialog1.FileName = "";

this.openFileDialog1.ShowDialog();

StreamWriter s = new StreamWriter(address + "\\Menu.ini", true);

s.WriteLine(openFileDialog1.FileName);//写入INI文件

s.Flush();

s.Close();

ShowWindows(openFileDialog1.FileName);

}

读取INI文件并将信息加入菜单的实现代码如下:

private void Form1_Load(object sender, EventArgs e)

{

StreamReader sr = new StreamReader(address + "\\Menu.ini");

int i = this.文件ToolStripMenuItem.DropDownItems.Count-2;

while (sr.Peek()>=0)//读取INI文件

{

ToolStripMenuItem menuitem = new ToolStripMenuItem(sr.ReadLine());

this.文件ToolStripMenuItem.DropDownItems.Insert(i, menuitem);

i++;

menuitem.Click += new EventHandler(menuitem_Click);

}

2 / 210

3 / 210

sr.Close();

}

自定义方法ShowWindows()用来加载背景图片并显

示窗体,实现代码如下: public void ShowWindows(string fileName)

{

Image

p = Image.FromFile(fileName);

Form f = new Form();

f.MdiParent = this;

f.BackgroundImage = p;

f.Show();

}

举一反三

根据本实例,读者可以开发以下程序。

记录用户操作菜单日志的程序。在用户单击菜单时,把用户、菜单命令和菜单对应功能写入保存菜单日志的INI 文件。如果需要查看日志,只需打开INI 文件。

通过数据库保存菜单历史信息的程序。

菜单使用频率的程序。把用户使用菜单的数据信息保存到数据库中,然后统计用户使用菜单的频率,并根据此频率调整菜单的显示顺序。

实例002 菜单动态合并

实例说明

在程序中经常使用弹出菜单,并且一个窗体中可以存在多个弹出菜单。开发过MDI 窗体的读者可能都知道,当MDI 子窗体最大化时,子窗体和主窗体的菜单

4 / 210

能够自动的合并。这是如何实现的呢?本例实现了将两个弹出菜单动态的合并成一个弹出菜单的功能。实例效果如图1.2所示。

技术要点

C# 2.0中已经将弹出菜单封装为Context MenuStrip 控件,利用该控件中的Items 对象可以操作菜单中的菜单项。该对象是ToolStripMenuItem 类型,使用Items.AddRange( )方法可以向弹出菜单中添加菜单项,该方法原型如下。 public void AddRange (

ToolStripItem[] toolStripItems

)

参数说明如下。

l toolStripItems :控件的数组。

实现过程

(1)创建一个项目,将其命名为Ex01_02,默认窗体为Form1。

(2)从工具箱中向Form1窗体添加一个MenuStrip 控件用来设计菜单;同时向窗体添加ContextMenuStrip 控件用来设计右键菜单;选中MenuStrip 控件创建一个“打开子窗体”主菜单,然后选中ContextMenuStrip 控件为其添加子项。

(3)为程序添加一个窗体,默认名为Form2,同时向窗体添加ContextMenu Strip 控件用来设计右键菜单,然后选中ContextMenuStrip 控件为其添加子项。

(4)主要程序代码。

private void 打开自窗体ToolStripMenuItem_Click(object sender, EventArgs e) {

Form2 f = new Form2();

f.MdiParent = this;

f.Show();//显示子窗体

f.Resize += new EventHandler(f_Resize);

}

5 / 210

void f_Resize(object sender, EventArgs e)

{

Form2 f = (Form2)sender;

ToolStripMenuItem item = new ToolStripMenuItem();

for (int i = 0; i < f.contextMenuStrip2.Items.Count; )//合并菜单

{

item.DropDownItems.Add(f.contextMenuStrip2.Items[i]);

}

this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripI tem[] {

item});

}

举一反三

根据本实例,读者可以实现以下功能。

让右键菜单在子窗体中显示。

让右键菜单在主窗体和子窗体中同时显示。

实例003 像开始菜单一样漂亮的菜单

实例说明

Windows 的开始菜单非常的独特,在菜单的旁边有一条竖着的彩条,彩条中还写着文字。这种独特的菜单能够使程序的界面看起来更加的漂亮。本例中就实现了这种菜单,运行本例弹出“打开菜单”时,就会看到菜单的左边有一个紫色的彩条。实例效果如图1.3所示。

技术要点

6 / 210

在C# 2.0中,MenuStrip 控件中的子项ToolStripMenuItem 已

经包括了左侧的彩条,实现像开始菜单一样的菜单非常容易,不像

在其他计算机语言的开发环境中,需要调用API 才可以实现。如果

想改变左侧竖着的彩条,只要给对应的菜单项设置相应的图片即可。

注意:如果要在左侧彩条显示文字,只要在对应的图片上加入文字即可。

实现过程

(1)创建一个项目,将其命名为Ex01_03,默认窗体为Form1。

(2)从工具箱中向Form1窗体添加MenuStrip 控件。

(3)为MenuStrip 控件添加相应的子项。

(4)为子项添加相应的图片。

举一反三

根据本实例,读者可以实现以下功能。

将菜单元设置成不同的格式(如图片、文字等)。

在菜单左侧播放动画。

实例004 任务栏托盘菜单

实例说明

有一些软件通常只是在后台运行,这些进程大部分时间不显示用户界面。可通过单击任务栏状态通知区域的图标来访问的病毒防护程序就是一个示例。Win dows 窗体中的NotifyIcon 控件通常用于显示在后台运行的进程的图标,本实例利用该控件制作了一个任务栏托盘菜单。实例效果如图1.4所示。

技术要点

要实现程序启动时出现在系统托盘中。必须要为窗体添加NotifyIcon 控件和ContextMenuStrip 控件。

7 / 210

注意:必须为

NotifyIcon 控件的Icon 属性设置图标。

实现过程

(1)创建一个项目,将其命名为Ex01_04,默认窗体为For

m1。

(2)向Form1窗体添加NotifyIcon 控件和

ContextMenuSt

rip 控件,并为ContextMenuStrip 控件添加子项。

(3

)选择NotifyIcon 控件,在其属性窗口中将ContextMe

nuStrip

属性设置为添加到窗体上的ContextMenuStrip 控件,并为Icon 属性设置图片。

举一反三

根据本实例,读者可以开发以下程序。

程序启动时不出现界面,直接出现在系统托盘中运行的后台程序。

程序启动时不出现在任务栏中。

实例005 可以拉伸的菜单界面

实例说明

如果管理程序功能菜单非常多,而用户只使用一些常用菜单,这时,可以将主菜单项下的不常用菜单隐藏起来。此种显示方式类似于对菜单进行拉伸。使用时,只需单击展开菜单,即可显示相应菜单功能。运行本例,效果如图1.5所示。

技术要点

要实现可以拉伸的菜单,关键是要使用一个开关变量,同时调用

ShowDropDown()方法,显示操作后的结果。下面详细介绍一下该方法。

8 / 210

ShowDropDown()方法用来显示与此ToolStripDrop DownItem 关联的ToolStr ipDropDownItem 控件。其语法结构如下:

public void ShowDropDown ()

另外,用ShowDropDown()方法还可以显示已由 DropDown 属性设置的下拉控件。

注意:必须设置开关变量的初值。

实现过程

(1)创建一个项目,将其命名为Ex01_05,默认窗体为Form1。

(2)从工具箱中向Form1窗体添加MenuStrip 控件,选中MenuStrip 控件为其添加子项。

(3)双击“展开(关闭)子项”为其双击事件添加处理代码。

(4)主要程序代码。

private void Form1_Load(object sender, EventArgs e)

{

//初始设置下面的菜单隐藏

this.设置密码ToolStripMenuItem.Visible = false;

this.添加用户ToolStripMenuItem.Visible = false;

this.忘记密码ToolStripMenuItem.Visible = false;

this.修改密码ToolStripMenuItem.Visible = false;

this.员工录入ToolStripMenuItem.Visible = false;

}

private void toolStripMenuItem1_Click(object sender, EventArgs e) {

switch (i)

{

case 1:

this.设置密码ToolStripMenuItem.Visible = false;

this.添加用户ToolStripMenuItem.Visible = false;

this.忘记密码ToolStripMenuItem.Visible = false;

this.修改密码ToolStripMenuItem.Visible = false;

this.员工录入ToolStripMenuItem.Visible = false;

i = 2;

this.操作ToolStripMenuItem.ShowDropDown();

break;

case 2:

this.设置密码ToolStripMenuItem.Visible = true;

9 / 210

this.添加用户ToolStripMenuItem.Visible =

true;

this.忘记密码ToolStripMenuItem.Visible = true;

this.修改密码ToolStripMenuItem.Visible = true;

this.员工录入ToolStripMenuItem.Visible =

true;

i = 1;

this.操作ToolStripMenuItem.ShowDropDown(); break;

}

}

举一反三

根据本实例,读者可以开发以下功能。 制作显示\隐藏工具栏。

合并菜单栏。

实例006 菜级联菜单

实例说明

如果管理程序功能菜单非常多,一些功能中又包括许多子功能,这时可以使用级联菜单来组织系统的各个功能。实例运行结果如图1.6所示。

图1.6 级联菜单

技术要点

制作级联菜单需要使用MenuStrip 控件。

注意:在使用级联菜单时最好不要超过5层,否则用户在使用时会很不方便。 实现过程

(1)创建一个项目,将其命名为Ex01_06,默认窗体为Form1。

10 / 210

(2

)在Form1窗体添加MenuStrip 控件,选中MenuStrip 控件为其添加子项和级联子项。

举一反三

根据本实例,读者可以开发以下功能。

大型系统的功能导航。

在窗体四周再增加菜单栏。

1.2 工具栏设计

在菜单栏中将常用的菜单命令以工具栏按钮的形式显示,并作为

快速访问方式。工具栏位于菜单栏的下方,由许多命令按钮组成,

每个命令按钮上都有一个形象的小图标,以标识命令按钮的功能。由于工具栏这种直观易用的特点,使其已成为

Windows 应用程序的标准界面。 实例007 带带背景的工具栏 实例说明

工具栏是窗体的组成部分之一,工具栏中的按钮可以设定完成一些较为常用或重要的功能,

本例中设计了一个工具栏,并且为该工具栏作了一些修饰,使工具栏带有背景。背景图案可以透过按钮显示,效果如图1.7所示。

技术要点

工具栏中的背景是一幅图片,在运行时应该将该图片绘制到工具栏上,在.N ET 2.0中,只需将工具栏按钮的BackGroundImage 的属性设置为对应的图片即可。

实现过程

11 / 210

1)创建一个项目,将其命名为Ex01_07,默认窗体为Form1。

(2)从工具箱中为Form1窗体添加ToolStrip 控件,并为工具栏添加相应的按钮。

(3)为工具栏的按钮设置相应的BackGroundImage 属性,相应的的图片就会变成按钮的背景。

举一反三

根据本实例,读者可以开发以下功能。

制作一个带动画效果的工具栏。

制作一个自定义样式的工具栏。

实例008 带浮动工具栏

实例说明

通常情况下,窗体显示在屏幕的中心。对于使用频率非常高的软件,通常放在屏幕上端以浮动工具栏形式显示。下面通过实例介绍浮动工具栏的设计方法。运行程序,程序可以停在屏幕的任何位置,当窗体失去焦点后,窗体将自动隐藏。效果如图1.8所示。

技术要点

窗体是否要隐藏,重要的是要判断在操作中,通过窗体的Focused 属性,是否可以确定窗体有焦点。在窗体有焦点时,该窗体正在被操作,这时需要完全显示在屏幕当中,如果窗体没有焦点,通过设置窗体到屏幕的高度,来确定窗体的隐藏部分。下面详细介绍一下Focused 属性。

Focused 属性用来获取一个值,该值指示控件是否有输入焦点。其语法结构如下:

public virtual bool Focused { get; }

l 属性值:如果控件有焦点,则为True ;否则为False 。

12 / 210

实现过程

(1)创建一个项目,将其命名为Ex01_08,默认窗体为Form1。

(2)从工具箱中为Form1窗体添加Panel 控件,并为Panel 控件添加相应的背景图片。

(3)在Panel 上添加两个Label 控件,并将其Text 属性设置为“打开”和“关闭”,同时把两个Label 控件的背景颜色设置为透明。

(4)主要程序代码。

private void timer1_Tick(object sender, EventArgs e)

{

if (this.Focused == false)

{

this.Top = -30;

}

}

private void label2_Click(object sender, EventArgs e)

{

this.Close();

}

private void panel1_MouseClick(object sender, MouseEventArgs e) {

this.Top = 60;

}

举一反三

根据本实例,读者可以开发以下功能。

制作一个带动画效果的工具栏。

制作一个飘动的工具栏。

13 / 210

实例009 在带下拉菜单的工具栏

实例说明

工具栏是窗体的组成部分之一,工具栏中的按钮可以完成一些较为常用或重

要的功能,本例中设计了一个工具栏,使工具栏带有下拉菜单,效果如图1.9所示。

技术要点

带下拉菜单的工具栏在其他计算机语言中实现比较复杂,但在.NET 2.0中已经提供了这个功能,只需将工具栏按钮的类型设置为DropDownButton 即可。 实现过程

(1)创建一个项目,将其命名为Ex01_09,默认窗体为Form1。

(2)从工具箱中为窗体添加ToolStrip 控件,并为工具栏添加相应的按钮,在按钮的下拉选项中选择DropDownButton 类型。

(3)为工具栏DropDownButton 类型的按钮设置相应的下拉菜单,就可以轻松实现带下拉菜单的工具栏。

举一反三

根据本实例,读者可以开发以下功能。

制作一个带右键菜单的工具栏。

制作一个带复选框的工具栏。

实例010 在具有提示功能的工具栏

实例说明

在文档\视图结构的应用程序中,默认情况下,当鼠标在工具栏按钮上停留片刻,会出现一个工具提示条。本例实现了一个具有提示功

能的工具栏,效果如图1.10所示。

技术要点

具有提示功能的工具栏在其他计算机语言中实现也许比较复杂,但在.NET 2.0中已经提供了这个功能。只需将工具栏按钮的ToolTipText设置为要提示的内容即可。下面详细介绍一下该属性。

ToolTipText属性用来获取或设置作为控件的ToolTip显示的文本。其语法结构如下:

public string ToolTipText { get; set; }

l 属性值:一个表示工具提示文本的字符串。

实现过程

(1)创建一个项目,将其命名为Ex01_10,默认窗体为Form1。

(2)从工具箱中为Form1窗体添加ToolStrip控件用来设计工具栏,并为工具栏添加相应的按钮。

(3)为相应按钮的ToolTipTile属性设置提示内容,就可以轻松实现具有提示功能的工具栏。

举一反三

根据本实例,读者可以开发以下功能。

具有提示功能的各种控件。

具有提示功能的窗体。

1.3 状态栏设计

状态栏是用来显示当前程序状态的。状态栏可以分为多个面板,用来显示不同状态下的内容,本节主要介绍了状态栏的用法以及如何在状态栏中添加控件。

14 / 210

实例011 在状态栏中显示检查框

实例说明

在设计程序界面时,为了规范界面,可以将一些控件放置在状态栏中,这样既能起到控制程序的作用,又能使界面和谐、美

观。运行程序,在窗体的状态栏中加入了显示时间检查框。效果如图1.11所示。

技术要点

在状态栏中添加检查框比较容易,只需先将状态栏加入窗体,然后将检查框从工具箱中拖入状态拦即可。

实现过程

(1)创建一个项目,将其命名为Ex01_11,默认窗体为Form1。

(2)从工具箱中为Form1窗体添加StatusStrip控件,并从工具箱中为状态栏添加CheckBox控件。

(3)主要程序代码。

private void checkBox2_CheckedChanged(object sender, EventArgs e)

{

if (this.checkBox2.Checked)

{

statusStrip1.Items[1].Text = "日期:" + DateTime.Now.ToString();

}

else

{

statusStrip1.Items[1].Text = "";

}

15 / 210

16 / 210

}

举一反三

根据本实例,读者可以开发以下功能。

运行时设置控件的位置。

动态控制控件的显示。

实例012 带进度条的状态栏

实例说明

上网浏览网页的读者都用过IE

浏览器,读者是否注意到该浏览器的状态栏,在打开网页的过程中,浏览器下边的状态栏中有一个进度条显示当前网页的载入进度,这样的状态栏使界面显得更加丰富多彩,并且非常实用。本例将设计一个带进度条的状态栏,并且在程序运行当中进度条可以显示其进度,该实例运行结果如图1.12所示。

技术要点

带进度条的状态栏在别的开发环境下实现相对比较复杂,但在.NET 2.0中已经提供了这个功能,只需将状态栏的按钮类型设置为ProgressBar 即可。通过设置ProgressBar 的Step 属性指定一个特定值用以逐次递增Value 属性的值,然后调用PerformStep 方法来使该值递增,就可以实现带进度条的状态栏。 实现过程

(1)创建一个项目,将其命名为Ex01_12,默认窗体为Form1。

(2)从工具箱中为Form1窗体添加StatusStrip 控件,并为状态栏添加相应的按钮,在按钮的下拉选项中选择ProgressBar 类型。

17 / 210

3)设置ToolStripProgressBar1的

Value 属性、Maximum 属性和

Step 属性。

(4)主要程序代码。

private void Form1_Load(object sender, EventArgs e)

{

while (toolStripProgressBar1.Value < toolStripProgressBar1.Maximum) {

this.toolStripProgressBar1.PerformStep(); }

}

举一反三

根据本实例,读者可以开发以下功能。

在状态栏中显示时间。

改变进度条的颜色。

实例013 状态栏中加入图标

实例说明

状态栏已经成为主界面必不可少的部分,状态栏一般用于显示程序状态、当前日期等,在状态栏中添加一张图片会使程序的主界面更有特色。运行本例,效果如图1.13所示。

技术要点

状态栏中加入图标在.NET 2.0中实现非常容易,只要将对应状态栏面板的I mage 属性设置为要显示的图片即可。

18 / 210

实现过程

(1)创建一个项目,将其命名为Ex01_13,默认窗体为Form1。

(2)从工具箱中为Form1窗体添加StatusStrip 控件,并为状态栏添加相应的按钮,设置添加的按钮的Image 属性为要显示的图片。

举一反三

根据本实例,读者可以实现以下功能。

将其他控件放置在状态栏中,如进度条。

将其他控件放置在状态栏中,如复选框。

1.4 导航菜单界面

对于一些应用工具软件,界面不但要求人性化、漂亮,还要突出界面功能、使用方便,这样才能吸引用户使用。本节主要介绍了常用的几种菜单界面。

实例014 OutLook 界面

实例说明

程序主界面包括菜单栏、工具栏、状态栏和树状视图。OutLook 界面美观、友好,是一个很实用的程序主界面,并且菜单栏和工具栏是可移动的。运行本例效果如图1.14所示。

19 / 210图1.14 Out Look界面

技术要点

一般程序的菜单栏和工具栏是不可移动的,但是只要将MenuStrip和ToolS trip控件的AllowItemRecorder属性设为True就可以移动。在本例中使用Men uStrip控件制作菜单栏,使用ToolStrip制作工具栏,使用StatusStrip控件制作状态栏。下面详细介绍一下这几个控件的属性。

1.ToolStrip. AllowItemReorder属性

获取或设置一个值,该值指示是否由ToolStrip类私自处理拖放和项重新排序。其结构如下:

public bool AllowItemReorder { get; set; }

l 属性值:如果让ToolStrip类自动处理拖放和项重新排序,为True;否则为False。默认值为False。

2.MenuStrip. AllowItemReorder属性

获取或设置一个值,该值指示是否由ToolStrip类私自处理拖放和项重新排序。其结构如下:

public bool AllowItemReorder { get; set; }

l 属性值:如果让MenuStrip类自动处理拖放和项重新排序,为True;否则为False。默认值为False。

3.ToolStripItem.DisplayStyle属性

获取或设置是否在ToolStripItem上显示文本和图像。

public virtual ToolStripItemDisplayStyle DisplayStyle { get; set; }

l 属性值:ToolStripItemDisplayStyle值之一。默认为ImageAndText。

注意:在移动菜单栏和工具栏时,需要按住“Alt”键,同时用鼠标进行拖动。

实现过程

(1)创建一个项目,将其命名为Ex01_14,默认窗体为Form1。

(2)在Form1窗体上添加MenuStrip控件,用来设计主菜单;添加

ToolSt rip控件,用来设计工具栏;添加StatusStrip

控件,用来设计状态栏;添加I mageList控件和TreeVew控件,用来设计树结构。

(3)分别为MenuStrip控件、ToolStrip控件、ImageList控件和TreeVew 控件添加子项,将MenuStrip控件和ToolStrip控件的AllowItemRecorder属性设为True,并将ToolStrip控件的每个子项的DisplayStyle属性设置为“Imag eAndText”。下面详细介绍这几个属性。

举一反三

根据本实例,读者可以实现以下功能。

制作一个系统菜单。

制作一个导航界面。

实例015 带带导航菜单的主界面

实例说明

在窗体界面中,菜单栏是不可缺少的重要组成部分。本实例是用其他的控件来制作一个摸拟菜单栏。运行程序,单击窗体上面的按钮,将会在按钮的下面显示一个下拉列表。如图1.15所示。

技术要点

20 / 210

该实例中主要使用Button控件和ListView控件制作导航菜单界面。在对L istView控件添加菜单信息时,必需在前面写入添加语句,如Listview.Items. Add,否则添加的菜单信息将替换前一条信息。单击相应的按钮时,应首先对Li stView控件进行清空,否则在ListView控件中将继续上一次的添加菜单信息。

实现过程

(1)创建一个项目,将其命名为Ex01_15,默认窗体为Form1。

(2)在Form1窗体上添加MenuStrip控件设计菜单栏;添加ToolStrip控件设计工具栏;添加SplitContainer控件、ImageList控件、3个Button控件和ListView控件用来制作左侧的导航栏。

(3)分别为MenuStrip控件、ToolStrip控件添加子项,将3个Button按钮和ListView控件加入SqlitContainer1.panel的左侧部分中。

(4)主要程序代码。

加载窗体时,设置左侧导航栏内容的实现代码如下:

private void Form1_Load(object sender, EventArgs e)

{

listView1.Clear();

79f2befda98271fe900ef988rgeImageList = imageList1;

listView1.Items.Add("设置上下班时间", "设置上下班时间", 0);

listView1.Items.Add("是否启用短信提醒", "是否启用短信提醒", 1);

listView1.Items.Add("设置密码", "设置密码", 2);

}

添加打开按钮的ListView控件显示内容的实现代码如下:

private void button2_Click_1(object sender, EventArgs e)

{

listView1.Dock = DockStyle.None;

button2.Dock = DockStyle.Top;

21 / 210

本文来源:https://www.bwwdw.com/article/rlfl.html

Top