2024年2月5日发(作者:)
一共470多例winform 界面特效的源码。
窗体与界面设计 ............................................................................................................................. 10
实例001 带历史信息的菜单 ....................................................................................................... 10
实例002 菜单动态合并 ............................................................................................................... 13
实例003 像开始菜单一样漂亮的菜单 ....................................................................................... 15
实例004 任务栏托盘菜单 ........................................................................................................... 16
实例005 可以拉伸的菜单界面 ................................................................................................... 16
实例006 菜级联菜单 ................................................................................................................... 18
1.2 工具栏设计 ............................................................................................................................. 19
实例007 带带背景的工具栏 ....................................................................................................... 19
实例008 带浮动工具栏 ............................................................................................................... 20
1 / 219
实例009 在带下拉菜单的工具栏 ............................................................................................... 22
实例010 在具有提示功能的工具栏 ........................................................................................... 23
实例011 在状态栏中显示检查框 ............................................................................................... 24
实例012 带进度条的状态栏 ....................................................................................................... 25
实例013 状态栏中加入图标 ....................................................................................................... 26
实例014 OutLook界面 ............................................................................................................... 27
实例015 带带导航菜单的主界面 ............................................................................................... 30
实例016 图形化的导航界面 ....................................................................................................... 33
2 / 219
实例017 菜类QQ的程序界面 ................................................................................................... 35
实例018 类似windows xp的程序界面 ..................................................................................... 38
实例019 以图形按钮显示的界面 ............................................................................................... 42
实例020 以树形显示的程序界面 ............................................................................................... 44
实例021 动态按钮的窗体界面 ................................................................................................... 46
实例022 非矩形窗体 ................................................................................................................... 50
实例023 建立字体形状窗体 ...................................................................................................... 52
实例024 控件随窗体自动调整 .................................................................................................. 54
实例025 带分隔栏的窗体 .......................................................................................................... 55
3 / 219
实例026 随机更换主界面背景 .................................................................................................. 56
实例027 自动启动的多媒体光盘程序 ...................................................................................... 57
实例028 为触摸屏程序添加虚拟键盘 ...................................................................................... 59
实例029 半透明渐显窗体 .......................................................................................................... 61
实例030 窗口颜色的渐变 .......................................................................................................... 63
实例031 窗体中的滚动字幕 ...................................................................................................... 65
实例032 动画显示窗体 .............................................................................................................. 67
实例033 制作闪烁的窗体 .......................................................................................................... 69
实例034 直接在窗体上绘图 ...................................................................................................... 70
4 / 219
实例035 动画形式的程序界面 .................................................................................................. 73
实例036 使窗体标题栏文字右对齐 .......................................................................................... 75
实例037 没有标题栏可义改变大小的窗口 .............................................................................. 76
实例038 设置窗体在屏幕中的位置 .......................................................................................... 77
实例039 始终在最上面的窗体 .................................................................................................. 78
实例040 限制窗体大小 .............................................................................................................. 79
实例041 获取桌面大小 .............................................................................................................. 81
实例042 在窗口间移动按扭 ...................................................................................................... 82
实例043 如何实现Office助手.................................................................................................. 84
5 / 219
实例044 在关闭窗口前加入确认对话框 .................................................................................. 85
实例045 使用任意组件拖动窗体 .............................................................................................. 88
实例046 修改提示字体及颜色 .................................................................................................. 89
实例047 如何为MDI类型窗体设置背景图片 ........................................................................ 91
实例048 向提示框中添加图标 .................................................................................................. 93
实例418 通过串口发送数据 ...................................................................................................... 95
实例419 通过串口关闭对方计算机 .......................................................................................... 98
实例420 密码写入与读出加密狗 ............................................................................................ 101
实例421 使用加密狗进行身份验证 ........................................................................................ 105
6 / 219
实例422 向IC卡中写入数据 .................................................................................................. 107
实例423 读取IC卡中的数据 .................................................................................................. 113
实例424 利用IC卡制作考勤程序 .......................................................................................... 116
实例425 简易视频程序 ............................................................................................................ 119
实例426 摄像头监控录像 ........................................................................................................ 125
实例427 超市摄像头定时监控系统 ........................................................................................ 127
实例428 语音卡电话呼叫系统 ................................................................................................ 132
实例429 客户来电查询系统 .................................................................................................... 141
实例430 语音卡实现电话录音 ................................................................................................ 144
7 / 219
实例431 利用短信猫收发短信息 ............................................................................................ 147
实例432 利用短信远程关闭计算机 ........................................................................................ 155
实例433 短信息采集烟草销售数据 ........................................................................................ 159
实例434 “春晚”节目评比短信息互动平台 ............................................................................ 164
实例435 条形码扫描器销售商品 ............................................................................................ 167
实例436 利用神龙卡制作练歌房程序 .................................................................................... 169
实例463 数据加密技术 ............................................................................................................ 174
实例464 文本文件加密与解密 ................................................................................................ 177
实例465 利用图片加密文件 .................................................................................................... 188
8 / 219
实例466 如何编程修复Access数据库 .................................................................................. 194
实例467 访问带验证模式的Sqlserver 2000数据库 .............................................................. 197
实例468 利用INI文件对软件进行注册 ................................................................................ 201
实例469 利用注册表设计软件注册程序 ................................................................................ 204
实例470 利用网卡序列号设计软件注册程序 ........................................................................ 208
实例471 根据cpu序列号、磁盘序列号设计软件注册程序 ................................................ 214
9 / 219
窗体与界面设计
1.1 菜单应用实例
菜单是程序开发中经常使用的界面元素,合理利用菜单不但可以使用户非常方便的操作程序的功能,更能使效率提高,适应人性化的潮流。下面通过几个应用实例,介绍菜单设计的方法和技术。
实例001 带历史信息的菜单
实例说明
在开发图纸管理软件时,要求在菜单上记录用户最近打开的档案或图纸,以方便下次使用。如图1.1所示,单击“文件”菜单下的“打开文件”子菜单,打开需要查阅的图纸。下次运行该软件时,上次打开的文件名记录到“文件”菜单的历史菜单中,选择该菜单,即可打开相应的图纸文件。
技术要点
要实现保存最近打开的文件,可以将在菜单中最近打开文件的文件名和路径保存到事先建立的*.ini文件中,系统启动时读取*.ini中的数据建立数组菜单,即可实现显示历史菜单的功能。
注意:要建立一个带历史信息的菜单,必须首先添加一个MenuStrip菜单控件,并将主窗体的IsMdiContainer属性设为True。
实现过程
(1)创建一个项目,将其命名为Ex01_01,默认窗体为Form1。
10 / 219
(2)从工具箱中向Form1窗体添加MenuStrip控件,同时向窗体添加OpenFileDialog控件。创建一个“文件”主菜单,在其下面创建打开、关闭所有、退出等菜单选项。
(3)主要程序代码。
将打开文件路径写入INI文件的实现代码如下:
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
me = "";
alog();
StreamWriter s = new StreamWriter(address + "", true);
ine(me);//写入INI文件
();
();
ShowWindows(me);
}
读取INI文件并将信息加入菜单的实现代码如下:
private void Form1_Load(object sender, EventArgs e)
{
StreamReader sr = new StreamReader(address + "");
int i = this.文件-2;
while (()>=0)//读取INI文件
{
ToolStripMenuItem menuitem = new ToolStripMenuItem(ne());
this.文件(i, menuitem);
i++;
+= new EventHandler(menuitem_Click);
}
();
11 / 219
}
自定义方法ShowWindows()用来加载背景图片并显示窗体,实现代码如下:
public void ShowWindows(string fileName)
{
Image p = le(fileName);
Form f = new Form();
ent = this;
oundImage = p;
();
}
举一反三
根据本实例,读者可以开发以下程序。
记录用户操作菜单日志的程序。在用户单击菜单时,把用户、菜单命令和菜单对应功能写入保存菜单日志的INI文件。如果需要查看日志,只需打开INI文件。
通过数据库保存菜单历史信息的程序。
菜单使用频率的程序。把用户使用菜单的数据信息保存到数据库中,然后统计用户使用菜单的频率,并根据此频率调整菜单的显示顺序。
12 / 219
实例002 菜单动态合并
实例说明
在程序中经常使用弹出菜单,并且一个窗体中可以存在多个弹出菜单。开发过MDI窗体的读者可能都知道,当MDI子窗体最大化时,子窗体和主窗体的菜单能够自动的合并。这是如何实现的呢?本例实现了将两个弹出菜单动态的合并成一个弹出菜单的功能。实例效果如图1.2所示。
技术要点
C# 2.0中已经将弹出菜单封装为Context MenuStrip控件,利用该控件中的Items对象可以操作菜单中的菜单项。该对象是ToolStripMenuItem类型,使用ge( )方法可以向弹出菜单中添加菜单项,该方法原型如下。
public void AddRange (
ToolStripItem[] toolStripItems
)
参数说明如下。
l toolStripItems:控件的数组。
实现过程
(1)创建一个项目,将其命名为Ex01_02,默认窗体为Form1。
(2)从工具箱中向Form1窗体添加一个MenuStrip控件用来设计菜单;同时向窗体添加ContextMenuStrip控件用来设计右键菜单;选中MenuStrip控件创建一个“打开子窗体”主菜单,然后选中ContextMenuStrip控件为其添加子项。
(3)为程序添加一个窗体,默认名为Form2,同时向窗体添加ContextMenuStrip控件用来设计右键菜单,然后选中ContextMenuStrip控件为其添加子项。
(4)主要程序代码。
13 / 219
private void 打开自窗体ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
ent = this;
();//显示子窗体
+= new EventHandler(f_Resize);
}
void f_Resize(object sender, EventArgs e)
{
Form2 f = (Form2)sender;
ToolStripMenuItem item = new ToolStripMenuItem();
for (int i = 0; i < ; )//合并菜单
{
([i]);
}
ge(new ripItem[] {
item});
}
举一反三
根据本实例,读者可以实现以下功能。
让右键菜单在子窗体中显示。
让右键菜单在主窗体和子窗体中同时显示。
14 / 219
实例003 像开始菜单一样漂亮的菜单
实例说明
Windows的开始菜单非常的独特,在菜单的旁边有一条竖着的彩条,彩条中还写着文字。这种独特的菜单能够使程序的界面看起来更加的漂亮。本例中就实现了这种菜单,运行本例弹出“打开菜单”时,就会看到菜单的左边有一个紫色的彩条。实例效果如图1.3所示。
技术要点
在C# 2.0中,MenuStrip控件中的子项ToolStripMenuItem已经包括了左侧的彩条,实现像开始菜单一样的菜单非常容易,不像在其他计算机语言的开发环境中,需要调用API才可以实现。如果想改变左侧竖着的彩条,只要给对应的菜单项设置相应的图片即可。
注意:如果要在左侧彩条显示文字,只要在对应的图片上加入文字即可。
实现过程
(1)创建一个项目,将其命名为Ex01_03,默认窗体为Form1。
(2)从工具箱中向Form1窗体添加MenuStrip控件。
(3)为MenuStrip控件添加相应的子项。
(4)为子项添加相应的图片。
举一反三
根据本实例,读者可以实现以下功能。
将菜单元设置成不同的格式(如图片、文字等)。
在菜单左侧播放动画。
15 / 219
实例004 任务栏托盘菜单
实例说明
有一些软件通常只是在后台运行,这些进程大部分时间不显示用户界面。可通过单击任务栏状态通知区域的图标来访问的病毒防护程序就是一个示例。Windows窗体中的NotifyIcon控件通常用于显示在后台运行的进程的图标,本实例利用该控件制作了一个任务栏托盘菜单。实例效果如图1.4所示。
技术要点
要实现程序启动时出现在系统托盘中。必须要为窗体添加NotifyIcon 控件和ContextMenuStrip控件。
注意:必须为NotifyIcon 控件的Icon属性设置图标。
实现过程
(1)创建一个项目,将其命名为Ex01_04,默认窗体为Form1。
(2)向Form1窗体添加NotifyIcon 控件和ContextMenuStrip控件,并为ContextMenuStrip控件添加子项。
(3)选择NotifyIcon 控件,在其属性窗口中将ContextMenuStrip属性设置为添加到窗体上的ContextMenuStrip控件,并为Icon属性设置图片。
举一反三
根据本实例,读者可以开发以下程序。
程序启动时不出现界面,直接出现在系统托盘中运行的后台程序。
程序启动时不出现在任务栏中。
16 / 219
实例005 可以拉伸的菜单界面
实例说明
如果管理程序功能菜单非常多,而用户只使用一些常用菜单,这时,可以将主菜单项下的不常用菜单隐藏起来。此种显示方式类似于对菜单进行拉伸。使用时,只需单击展开菜单,即可显示相应菜单功能。运行本例,效果如图1.5所示。
技术要点
要实现可以拉伸的菜单,关键是要使用一个开关变量,同时调用ShowDropDown()方法,显示操作后的结果。下面详细介绍一下该方法。
ShowDropDown()方法用来显示与此ToolStripDrop DownItem关联的ToolStripDropDownItem控件。其语法结构如下:Ex01_04
public void ShowDropDown ()
另外,用ShowDropDown()方法还可以显示已由 DropDown 属性设置的下拉控件。
注意:必须设置开关变量的初值。
实现过程
(1)创建一个项目,将其命名为Ex01_05,默认窗体为Form1。
(2)从工具箱中向Form1窗体添加MenuStrip控件,选中MenuStrip控件为其添加子项。
(3)双击“展开(关闭)子项”为其双击事件添加处理代码。
(4)主要程序代码。
private void Form1_Load(object sender, EventArgs e)
{
//初始设置下面的菜单隐藏
this.设置密码e = false;
this.添加用户e = false;
this.忘记密码e = false;
this.修改密码e = false;
17 / 219
this.员工录入e = false;
}
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
switch (i)
{
case 1:
this.设置密码e = false;
this.添加用户e = false;
this.忘记密码e = false;
this.修改密码e = false;
this.员工录入e = false;
i = 2;
this.操作opDown();(啥意思?)
break;
case 2:
this.设置密码e = true;
this.添加用户e = true;
this.忘记密码e = true;
this.修改密码e = true;
this.员工录入e = true;
i = 1;
this.操作opDown();
break;
}
}
举一反三
` 发以下功能。
制作显示隐藏工具栏。
合并菜单栏。
实例006 菜级联菜单
实例说明
18 / 219
如果管理程序功能菜单非常多,一些功能中又包括许多子功能,这时可以使用级联菜单来组织系统的各个功能。实例运行结果如图1.6所示。
图1.6 级联菜单
技术要点
制作级联菜单需要使用MenuStrip控件。
注意:在使用级联菜单时最好不要超过5层,否则用户在使用时会很不方便。
实现过程
(1)创建一个项目,将其命名为Ex01_06,默认窗体为Form1。
(2)在Form1窗体添加MenuStrip控件,选中MenuStrip控件为其添加子项和级联子项。
举一反三
根据本实例,读者可以开发以下功能。
大型系统的功能导航。
在窗体四周再增加菜单栏。
1.2 工具栏设计
在菜单栏中将常用的菜单命令以工具栏按钮的形式显示,并作为快速访问方式。工具栏位于菜单栏的下方,由许多命令按钮组成,每个命令按钮上都有一个形象的小图标,以标识命令按钮的功能。由于工具栏这种直观易用的特点,使其已成为Windows应用程序的标准界面。
19 / 219
实例007 带带背景的工具栏
实例说明
工具栏是窗体的组成部分之一,工具栏中的按钮可以设定完成一些较为常用或重要的功能,本例中设计了一个工具栏,并且为该工具栏作了一些修饰,使工具栏带有背景。背景图案可以透过按钮显示,效果如图1.7所示。
技术要点
工具栏中的背景是一幅图片,在运行时应该将该图片绘制到工具栏上,在.NET 2.0中,只需将工具栏按钮的BackGroundImage的属性设置为对应的图片即可。
实现过程
(1)创建一个项目,将其命名为Ex01_07,默认窗体为Form1。
(2)从工具箱中为Form1窗体添加ToolStrip控件,并为工具栏添加相应的按钮。
(3)为工具栏的按钮设置相应的BackGroundImage属性,相应的的图片就会变成按钮的背景。
举一反三
根据本实例,读者可以开发以下功能。
制作一个带动画效果的工具栏。
制作一个自定义样式的工具栏。
实例008 带浮动工具栏
实例说明
通常情况下,窗体显示在屏幕的中心。对于使用频率非常高的软件,通常放在屏幕上端以浮动工具栏形式显示。下面通过实例介绍浮动工具栏的设计方法。 20 / 219
运行程序,程序可以停在屏幕的任何位置,当窗体失去焦点后,窗体将自动隐藏。效果如图1.8所示。
技术要点
窗体是否要隐藏,重要的是要判断在操作中,通过窗体的Focused属性,是否可以确定窗体有焦点。在窗体有焦点时,该窗体正在被操作,这时需要完全显示在屏幕当中,如果窗体没有焦点,通过设置窗体到屏幕的高度,来确定窗体的隐藏部分。下面详细介绍一下Focused属性。
Focused属性用来获取一个值,该值指示控件是否有输入焦点。其语法结构如下:
public virtual bool Focused { get; }
l 属性值:如果控件有焦点,则为True;否则为False。
实现过程
(1)创建一个项目,将其命名为Ex01_08,默认窗体为Form1。
(2)从工具箱中为Form1窗体添加Panel控件,并为Panel控件添加相应的背景图片。
(3)在Panel上添加两个Label控件,并将其Text属性设置为“打开”和“关闭”,同时把两个Label控件的背景颜色设置为透明。
(4)主要程序代码。
private void timer1_Tick(object sender, EventArgs e)
{
if (d == false)
{
= -30;
}
}
private void label2_Click(object sender, EventArgs e)
{
21 / 219
();
}
private void panel1_MouseClick(object sender, MouseEventArgs e)
{
= 60;
}
举一反三
根据本实例,读者可以开发以下功能。
制作一个带动画效果的工具栏。
制作一个飘动的工具栏。
实例009 在带下拉菜单的工具栏
实例说明
工具栏是窗体的组成部分之一,工具栏中的按钮可以完成一些较为常用或重要的功能,本例中设计了一个工具栏,使工具栏带有下拉菜单,效果如图1.9所示。
技术要点
带下拉菜单的工具栏在其他计算机语言中实现比较复杂,但在.NET 2.0中已经提供了这个功能,只需将工具栏按钮的类型设置为DropDownButton即可。
实现过程
(1)创建一个项目,将其命名为Ex01_09,默认窗体为Form1。
(2)从工具箱中为窗体添加ToolStrip控件,并为工具栏添加相应的按钮,在按钮的下拉选项中选择DropDownButton类型。
22 / 219
(3)为工具栏DropDownButton类型的按钮设置相应的下拉菜单,就可以轻松实现带下拉菜单的工具栏。
举一反三
根据本实例,读者可以开发以下功能。
制作一个带右键菜单的工具栏。
制作一个带复选框的工具栏。
实例010 在具有提示功能的工具栏
实例说明 ToolTip控件
在文档视图结构的应用程序中,默认情况下,当鼠标在工具栏按钮上停留片刻,会出现一个工具提示条。本例实现了一个具有提示功能的工具栏,效果如图1.10所示。
技术要点
具有提示功能的工具栏在其他计算机语言中实现也许比较复杂,但在.NET 2.0中已经提供了这个功能。只需将工具栏按钮的ToolTipText设置为要提示的内容即可。下面详细介绍一下该属性。
ToolTipText属性用来获取或设置作为控件的ToolTip显示的文本。其语法结构如下:
public string ToolTipText { get; set; }
l 属性值:一个表示工具提示文本的字符串。
实现过程
(1)创建一个项目,将其命名为Ex01_10,默认窗体为Form1。
(2)从工具箱中为Form1窗体添加ToolStrip控件用来设计工具栏,并为工具栏添加相应的按钮。
23 / 219
(3)为相应按钮的ToolTipTile属性设置提示内容,就可以轻松实现具有提示功能的工具栏。
举一反三
根据本实例,读者可以开发以下功能。
具有提示功能的各种控件。
具有提示功能的窗体。
1.3 状态栏设计
状态栏是用来显示当前程序状态的。状态栏可以分为多个面板,用来显示不同状态下的内容,本节主要介绍了状态栏的用法以及如何在状态栏中添加控件。
实例011 在状态栏中显示检查框
实例说明
在设计程序界面时,为了规范界面,可以将一些控件放置在状态栏中,这样既能起到控制程序的作用,又能使界面和谐、美观。运行程序,在窗体的状态栏中加入了显示时间检查框。效果如图1.11所示。
技术要点
在状态栏中添加检查框比较容易,只需先将状态栏加入窗体,然后将检查框从工具箱中拖入状态拦即可。
实现过程
(1)创建一个项目,将其命名为Ex01_11,默认窗体为Form1。
(2)从工具箱中为Form1窗体添加StatusStrip控件,并从工具箱中为状态栏添加CheckBox控件。
(3)主要程序代码。
24 / 219
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (d)
{
[1].Text = "日期:" + ng();
}
else
{
[1].Text = "";
}
}
举一反三
根据本实例,读者可以开发以下功能。
运行时设置控件的位置。
动态控制控件的显示。
实例012 带进度条的状态栏
实例说明
上网浏览网页的读者都用过IE浏览器,读者是否注意到该浏览器的状态栏,在打开网页的过程中,浏览器下边的状态栏中有一个进度条显示当前网页的载入进度,这样的状态栏使界面显得更加丰富多彩,并且非常实用。本例将设计一个带进度条的状态栏,并且在程序运行当中进度条可以显示其进度,该实例运行结果如图1.12所示。
技术要点 25 / 219
带进度条的状态栏在别的开发环境下实现相对比较复杂,但在.NET 2.0中已经提供了这个功能,只需将状态栏的按钮类型设置为ProgressBar即可。通过设置ProgressBar的Step 属性指定一个特定值用以逐次递增Value属性的值,然后调用PerformStep方法来使该值递增,就可以实现带进度条的状态栏。
实现过程
(1)创建一个项目,将其命名为Ex01_12,默认窗体为Form1。
(2)从工具箱中为Form1窗体添加StatusStrip控件,并为状态栏添加相应的按钮,在按钮的下拉选项中选择ProgressBar类型。
(3)设置ToolStripProgressBar1的Value属性、Maximum属性和Step属性。
(4)主要程序代码。
private void Form1_Load(object sender, EventArgs e)
{
while ( < m)
{
mStep();
}
}
举一反三
根据本实例,读者可以开发以下功能。
在状态栏中显示时间。
改变进度条的颜色。
实例013 状态栏中加入图标
26 / 219
实例说明
状态栏已经成为主界面必不可少的部分,状态栏一般用于显示程序状态、当前日期等,在状态栏中添加一张图片会使程序的主界面更有特色。运行本例,效果如图1.13所示。
技术要点
状态栏中加入图标在.NET 2.0中实现非常容易,只要将对应状态栏面板的Image属性设置为要显示的图片即可。
实现过程
(1)创建一个项目,将其命名为Ex01_13,默认窗体为Form1。
(2)从工具箱中为Form1窗体添加StatusStrip控件,并为状态栏添加相应的按钮,设置添加的按钮的Image属性为要显示的图片。
举一反三
根据本实例,读者可以实现以下功能。
将其他控件放置在状态栏中,如进度条。
将其他控件放置在状态栏中,如复选框。
1.4 导航菜单界面
对于一些应用工具软件,界面不但要求人性化、漂亮,还要突出界面功能、使用方便,这样才能吸引用户使用。本节主要介绍了常用的几种菜单界面。
实例014 OutLook界面
实例说明
27 / 219
程序主界面包括菜单栏、工具栏、状态栏和树状视图。OutLook界面美观、友好,是一个很实用的程序主界面,并且菜单栏和工具栏是可移动的。运行本例效果如图1.14所示。
图1.14 Out Look界面
技术要点
一般程序的菜单栏和工具栏是不可移动的,但是只要将MenuStrip和ToolStrip控件的AllowItemRecorder属性设为True就可以移动。在本例中使用MenuStrip控件制作菜单栏,使用ToolStrip制作工具栏,使用StatusStrip控件制作状态栏。下面详细介绍一下这几个控件的属性。
1.ToolStrip. AllowItemReorder属性
获取或设置一个值,该值指示是否由ToolStrip类私自处理拖放和项重新排序。其结构如下:
public bool AllowItemReorder { get; set; }
28 / 219
l 属性值:如果让ToolStrip类自动处理拖放和项重新排序,为True;否则为False。默认值为False。
2.MenuStrip. AllowItemReorder属性
获取或设置一个值,该值指示是否由ToolStrip类私自处理拖放和项重新排序。其结构如下:
public bool AllowItemReorder { get; set; }
l 属性值:如果让 MenuStrip类自动处理拖放和项重新排序,为True;否则为False。默认值为False。
3.yStyle属性
获取或设置是否在ToolStripItem上显示文本和图像。
public virtual ToolStripItemDisplayStyle DisplayStyle { get; set; }
l 属性值:ToolStripItemDisplayStyle值之一。默认为ImageAndText。
注意:在移动菜单栏和工具栏时,需要按住“Alt”键,同时用鼠标进行拖动。
实现过程
(1)创建一个项目,将其命名为Ex01_14,默认窗体为Form1。
(2)在Form1窗体上添加MenuStrip控件,用来设计主菜单;添加ToolStrip控件,用来设计工具栏;添加StatusStrip控件,用来设计状态栏;添加ImageList控件和TreeVew控件,用来设计树结构。
(3)分别为MenuStrip控件、ToolStrip控件、ImageList控件和TreeVew控件添加子项,将MenuStrip控件和ToolStrip控件的AllowItemRecorder属性设为True,并将ToolStrip控件的每个子项的DisplayStyle属性设置为“ImageAndText”。下面详细介绍这几个属性。
举一反三
根据本实例,读者可以实现以下功能。
制作一个系统菜单。
制作一个导航界面。
29 / 219
实例015 带带导航菜单的主界面
实例说明
在窗体界面中,菜单栏是不可缺少的重要组成部分。本实例是用其他的控件来制作一个摸拟菜单栏。运行程序,单击窗体上面的按钮,将会在按钮的下面显示一个下拉列表。如图1.15所示。
技术要点
该实例中主要使用Button控件和ListView控件制作导航菜单界面。在对ListView控件添加菜单信息时,必需在前面写入添加语句,如,否则添加的菜单信息将替换前一条信息。单击相应的按钮时,应首先对ListView控件进行清空,否则在ListView控件中将继续上一次的添加菜单信息。
实现过程
(1)创建一个项目,将其命名为Ex01_15,默认窗体为Form1。
(2)在Form1窗体上添加MenuStrip控件设计菜单栏;添加ToolStrip控件设计工具栏;添加SplitContainer控件、ImageList控件、3个Button控件和ListView控件用来制作左侧的导航栏。
(3)分别为MenuStrip控件、ToolStrip控件添加子项,将3个Button按钮和ListView控件加入的左侧部分中。
(4)主要程序代码。
加载窗体时,设置左侧导航栏内容的实现代码如下:
private void Form1_Load(object sender, EventArgs e)
{
();
mageList = imageList1;
30 / 219
("设置上下班时间", "设置上下班时间", 0);
("是否启用短信提醒", "是否启用短信提醒", 1);
("设置密码", "设置密码", 2);
}
添加打开按钮的ListView控件显示内容的实现代码如下:
private void button2_Click_1(object sender, EventArgs e)
{
= ;
= ;
Back();
= ;
= ;
= ;
();
("近期工作记录", "近期工作记录", 3);
("近期工作计划", "近期工作计划", 4);
}
添加编辑按钮的ListView控件显示内容的实现代码如下:
private void button3_Click_1(object sender, EventArgs e)
{
= ;
Back();
= ;
Back();
= ;
Back();
= ;
31 / 219
= ;
();
("编辑工作进度报告", "编辑工作进度报告", 5);
("编辑项目设计图", "编辑项目设计图", 6);
}
添加设置按钮的ListView控件显示内容的实现代码如下:
private void button1_Click_1(object sender, EventArgs e)
{
= ;
= ;
Back();
= ;
Back();
= ;
oFront();
= ;
();
("设置上下班时间", "设置上下班时间", 0);
("是否启用短信提醒", "是否启用短信提醒",1);
("设置密码", "设置密码", 2);
}
举一反三
根据本实例,读者可以实现以下功能。
制作一个系统菜单。
制作大型系统的导航界面。
32 / 219
实例016 图形化的导航界面
实例说明
如果以按钮来代替菜单的功能,会使界面更具有个性化。使操作者更易于操作。下面介绍按钮显示菜单的设计方法。运行本例,效果如图1.16所示。
图1.16 图形化的导航界面
33 / 219
技术要点
本实例主要通过设置Button控件的相应属性,确定其按钮的位置、文字、显示样式和要显示的图片等。下面对Button控件相应属性进行详细介绍。
1.Button. BackColor属性
获取或设置控件的背景色,其方法结构如下:
public override Color BackColor { get; set; }
l 属性值:一个表示背景色的Color值。
2.Button. FlatStyle属性
获取或设置按钮控件的平面样式外观。其代码如下:
public FlatStyle FlatStyle { get; set; }
l 属性值:FlatStyle 值之一。默认值为Standard。
3.Button. TextImageRelation属性
获取或设置文本和图像相互之间的相对位置。其代码如下:
public TextImageRelation TextImageRelation { get; set; }
l 属性值:TextImageRelation 的值之一。默认为Overlay。
实现过程
(1)创建一个项目,将其命名为Ex01_16,默认窗体为Form1。
(2)在Form1窗体上添加MenuStrip控件用来设计菜单栏,添加ToolStrip控件用来设计工具栏,添加Panel控件、Button控件用来设计图形化的导航按钮。
(3)分别为MenuStrip控件、ToolStrip控件添加子项,并为Panel控件选择背景图片。
(4)将Button控件的BackColor属性设为“Transparent”、FlatStyle属性设置为“Flat”、TextImageRelation属性设置为“ImageBeforeText”。
(5)主要程序代码。
private void button1_Click(object sender, EventArgs e)
{
//使子项可见
e = true;
34 / 219
e = true;
e = true;
}
private void button2_Click(object sender, EventArgs e)
{
//使子项可见
e = true;
e = true;
e = true;
}
private void button3_Click(object sender, EventArgs e)
{
//使子项可见
e = true;
e = true;
e = true;
}
举一反三
根据本实例,读者可以实现以下功能。
制作动态的按钮界面。
制作动态的图片界面。
1.5 特色程序界面
现在有很多开发人员都将界面制作成不同类型的样式,这样可以使界面更加形象化。本节主要介绍了如何对程序界面进行特色化设计,如类似QQ、Windows XP的界面等。
实例017 菜类QQ的程序界面
实例说明
35 / 219
一般程序都是以菜单栏和工具栏的形式调用其他功能模块,如果以动态的类似QQ的程序界面来调用其他功能模块,将会给用户一种新鲜的感觉,使用户对软件更感兴趣。实例运行结果如图1.17所示。
技术要点
本例主要使用Button控件来完成布局,使用ListView控件来显示有图标的功能菜单。ListView控件的常用属性及说明如下。
1.属性
使用该属性可直接访问表示列表中项目的ListItem对象。其结构如下:
public ListViewItemCollection Items { get; }
l 属性值: ewItemCollection包含ListView控件中所有的项。
2.属性
获取或设置哪些控件边框停靠到其父控件并确定控件如何随其父级一起调整大小。其结构如下:
public virtual DockStyle Dock { get; set; }
l 属性值:DockStyle值之一。默认为None。
实现过程
(1)创建一个项目,将其命名为Ex01_17,默认窗体为Form1。
(2)在窗体上添加Button控件、ListView控件和ImageList控件。设置ListView控件的ImageList属性为ImageList控件。
(3)主要程序代码。
添加“我的好友”选项内容的实现代码如下:
private void button1_Click(object sender, EventArgs e)
{
= ;
= ;
= ;
36 / 219
Back();
= ;
oFront();
= ;
();
("小猪", "小猪", 0);
("小狗", "小狗", 1);
("娇娇", "娇娇", 2);
}
添加默认时选项内容的实现代码如下:
private void Form1_Load(object sender, EventArgs e)
{
();
mageList = imageList1;
("小猪", "小猪", 0);
("小狗", "小狗", 1);
("娇娇", "娇娇", 2);
}
添加“陌生人”选项内容的实现代码如下:
private void button2_Click(object sender, EventArgs e)
{
= ;
= ;
Back();
= ;
= ;
= ;
37 / 219
();
("北风", "北风", 3);
}
添加“黑名单”选项内容的实现代码如下:
private void button3_Click(object sender, EventArgs e)
{
= ;
Back();
= ;
Back();
= ;
Back();
= ;
= ;
();
("冰雨", "冰雨", 5);
}
举一反三
根据本实例,读者可以实现以下功能。
根据数据库信息形成相应的功能列表。
制作聊天界面。
实例018 类似windows xp的程序界面
38 / 219
实例说明
在Windows XP环境下打开控制面板,会发现左侧的导航界面很实用。双击展开按钮,导航栏功能显示出来,双击收缩按钮,导航按钮收缩。下面通过实例介绍此种主窗体的设计方法。运行本例,效果如图1.18所示。
技术要点
PictureBox控件是一个图像显示控件,该控件主要以其中的Image属性存储图像数据。其详细介绍如下。
属性用来获取或设置 PictureBox 显示的图像,其语法格式如下:
public Image Image { get; set; }
39 / 219
图1.18 类似windows xp的程序界面
l 属性值:要显示的Image。
实现过程
(1)创建一个项目,将其命名为Ex01_18,默认窗体为Form1。
(2)在Form1窗体上添加Button控件、PictureBox控件和label控件,布局如图1.18所示。
(3)主要程序代码。
双击“向下箭头”的实现代码如下:
private void pictureBox5_Click(object sender, EventArgs e)
{
//使子项收缩
int i ;
i=80;
e = false;
e = false;
e = false;
e = false;
-= i;
-= i;
-= i;
40 / 219
-= i;
-= i;
-= i;
-= i;
-= i;
-= i;
-= i;
-= i;
}
双击“向上箭头”的实现代码如下:
private void pictureBox2_Click(object sender, EventArgs e)
{
//展开子项
if (e == false)
{
int i;
i = 80;
e = true;
e = true;
e = true;
e = true;
+= i;
+= i;
+= i;
+= i;
+= i;
+= i;
+= i;
41 / 219
+= i;
+= i;
+= i;
+= i;
}
}
private void Form1_Load(object sender, EventArgs e)
{
SetStyle(tsTransparentBackColor,true);
}
注意:在对控件的高度进行递增或递减的时候,数值不要太小。
举一反三
根据本实例,读者可以实现以下功能。
制作Windows XP控制面板。
制作Windows XP开始导航菜单。
实例019 以图形按钮显示的界面
实例说明
菜单和工具栏虽然能方便用户操作程序的相应功能,但各有缺点。如果采用按钮式功能菜单,不但美观大方,而且操作灵活。当单击按钮时,用户区将显示相应的操作按钮组。下面介绍图形界面式菜单的设计方法。运行本例,效果如图1.19所示。
42 / 219
图1.19 以图形按钮显示的界面
技术要点
本例中用到了le方法和属性,下面详细介绍一下。
(1)le方法:从指定的文件创建Image。该函数的结构为:
public static Image FromFile (string filename)
参数说明如下。
l filename:当前目录的指定路径字符串,包含要从中创建Image的文件的名称。
l 返回值:此方法创建的Image。
(2)属性:获取或设置PictureBox显示的图像。其属性结构为:
public Image Image { get; set; }
l 属性值:要显示的Image。
注意:在本例中不易使窗体最大化。如最大化,会使Label控件不在正确的位置上。
实现过程
(1)创建一个项目,将其命名为Ex01_19,默认窗体为Form1。
(2)在Form1窗体上添加MenuStrip控件用来设计菜单;添加Picture控件、Panel控件用来设计图形显示的界面。
43 / 219
(3)将panel的背景图片设置为图1.19所示,并在图片上添加Label控件,同时将Label控件的BackColor属性设置为transparency。
(4)主要程序代码。
private void label1_Click(object sender, EventArgs e)
{
= le("");//为控件加载图像
}
举一反三
根据本实例,读者可以实现以下功能。
制作图片的动态更新。
制作一个图片浏览器。
实例020 以树形显示的程序界面
实例说明
以树形来显示程序的菜单,可以更直观更快捷的对软件进行操作。树形菜单比菜单栏更加美观实用。下面介绍树形界面菜单的设计方法。运行本例效果如图1.20所示。
44 / 219
图1.20 以树形显示的程序界面
45 / 219
技术要点
在对TreeView控件输入记录时,双击Nodes属性就可以对TreeView的节点进行设置。
可以在窗体的Load事件中输入下面的一条命令:
All();
功能:展开TreeView控件中所有的下级菜单。
实现过程
(1)创建一个项目,将其命名为Ex01_20,默认窗体为Form1。
(2)在窗体上添加MenuStrip控件用来设计菜单栏,添加PictureBox控件用来显示图片,添加TreevVew控件用来设计左侧树形导航界面。
(3)为PictureBox添加背景图片,给MenuStrip控件和TreevVew控件添加子项。
(4)主要程序代码。
private void Form1_Load(object sender, EventArgs e)
{
All();
}
举一反三
根据本实例,读者可以实现以下功能。
制作一个动态的从数据库中读取数据的树型界面。
制作一个带图标的树型界面。
实例021 动态按钮的窗体界面
46 / 219
实例说明
在窗体界面中,通常以按钮来代替菜单栏的功能,这种形式虽然给用户一种直观,界面风格各异的感党,但通常按钮都是以静止的形式显示,如果使光标移到按钮时,可以使按钮上的图片和文字说明动态化,使用户快捷地找到所选按钮。这样就需要一个动态的按钮显示界面。运行本例效果如图1.21所示。
图1.21 动态按钮的窗体界面
47 / 219
技术要点
在编辑过程中,首先在Button控件中的Image属性中添加图片,然后将Button控件的ImageAlign属性设置为MiddleCenter,使图片居中。在设置Button控件的动态图片时,必须在相应控件的MouseMove事件中设置。
1.属性
获取或设置显示在按钮控件上的图像,其语法格式如下:
public Image Image { get; set; }
l 属性值:按钮控件上显示的Image。默认值为空引用。
2.Button. ImageAlign属性
获取或设置按钮控件上的图像对齐方式,其语法格式如下:
public ContentAlignment ImageAlign { get; set; }
l 属性值:ContentAlignment值之一。默认值为MiddleCenter。
注意:当鼠标移开Button控件时,图片与字应及时恢复原位。
实现过程
(1)创建一个项目,将其命名为Ex01_21,默认窗体为Form1。
(2)在Form1窗体上添加PictureBox用来显示图片,添加Button、Lable控件用来设计动态按钮。
(3)为PictureBox控件设置背景图片,将Lable控件的Text属性设置为“明日科技有限公司”,并为每个Button控件设置图片和文字。
(4)主要程序代码。
private void button1_MouseMove(object sender, MouseEventArgs e)
{
//鼠标移动时改变图片位置
lign = Left;
}
private void button2_MouseMove(object sender, MouseEventArgs e)
{
48 / 219
lign = Left;
}
private void button3_MouseMove(object sender, MouseEventArgs e)
{
lign = Left;
}
private void button4_MouseMove(object sender, MouseEventArgs e)
{
lign = Left;
}
private void button5_MouseMove(object sender, MouseEventArgs e)
{
lign = Left;
}
private void button1_MouseLeave(object sender, EventArgs e)
{
lign = Center;
}
//鼠标离开时改变图片位置
private void button2_MouseLeave(object sender, EventArgs e)
{
lign = Center;
}
private void button3_MouseLeave(object sender, EventArgs e)
{
lign = Center;
}
private void button4_MouseLeave(object sender, EventArgs e)
49 / 219
本文发布于:2024-02-05 20:32:48,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170713636858303.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |