转载自:http://www.cnblogs.com/huangf714/p/5876133.html
一共470多例winform 界面特效的源代码。
窗体与界面设计... 9
实例001 有历史信息的菜单 10
实例002 动态合并菜单 12
实例003 菜单和开始菜单一样漂亮... 14
实例004 托盘菜单的任务栏 15
实例005 菜单界面可拉伸 16
实例006 菜级联菜单 18
1.2 工具栏设计... 19
实例007 带背景的工具栏 19
实例008 带浮动工具栏 20
实例009 带下拉菜单的工具栏... 21
实例010 具有提示功能的工具栏... 22
实例011 检查框显示在状态栏中... 23
实例012 带进度条的状态栏 25
实例013 在状态栏中添加图标 26
实例014 OutLook界面 27
实例015 带导航菜单的主界面... 29
实例016 图形导航界面 32
实例017 菜类QQ的程序界面 35
实例018 类似windows xp的程序界面... 38
实例019 界面显示在图形按钮上... 42
实例020 以树形显示的程序界面... 44
实例021 窗体界面的动态按钮 46
实例022 非矩形窗体 50
实例023 建立字体形状窗体 52
实例024 随窗体自动调整控件 54
实例025 带分隔栏的窗体 55
实例026 主界面背景随机更换 56
实例027 多媒体光盘程序自动启动... 57
实例028 将虚拟键盘添加到触摸屏程序中... 59
实例029 半透明逐渐显示窗体 61
实例030 渐变窗口颜色 63
实例031 窗体内的滚动字幕 65
实例032 动画显示窗体 67
实例033 制作闪烁的窗体 69
实例034 直接在窗体上画图 70
实例035 动画形式的程序界面 73
实例036 使窗标栏文字右对齐... 75
实例037 没有可能改变窗口大小的标题栏。... 76
实例038 在屏幕上设置窗体的位置... 77
实例039 窗体总是在顶部 78
实例040 限制窗体大小 79
实例041 获取桌面大小 81
实例042 移动窗户之间的按钮 82
实例043 如何实现Office助手 84
实例044 在关闭窗口前添加确认对话框... 85
实例045 使用任何组件拖动窗体... 88
实例046 修改字体和颜色 89
实例047 如何为MDI窗体设置背景图片... 91
实例048 将图标添加到提示框中 93
实例418 数据通过串口发送 95
实例419 通过串口关闭对方计算机... 98
实例420 加密狗的密码写入和读取... 101
实例421 使用加密狗进行身份验证... 105
实例422 向IC将数据写入卡中 107
实例423 读取IC卡中的数据 113
实例424 利用IC制作考勤卡... 116
实例425 视频程序简单 119
实例426 摄像头监控录像 125
实例427 超市摄像头定期监控系统... 127
实例428 语音卡电话呼叫系统 132
实例429 客户致电查询系统 141
实例430 语音卡实现电话录音 144
实例431 短信猫收发短信信息... 147
实例432 短信远程关闭计算机... 155
实例433 短信收集烟草销售数据... 159
实例434 春晚节目评价短信互动平台... 164
实例435 条码扫描仪销售商品... 167
实例436 用神龙卡制作练歌房程序... 169
实例463 数据加密技术 174
实例464 加密和解密文本文件 177
实例465 使用图片加密文件 188
实例466 如何编程修复Access数据库... 194
实例467 访问带验证模式Sqlserver 2000数据库... 197
实例468 利用INI注册软件文件... 201
实例469 使用注册表设计软件注册程序... 204
实例470 使用网卡序列号设计软件注册程序... 208
实例471 根据cpu软件注册程序编号、磁盘序列编号... 214
窗体与界面设计
1.1 菜单应用实例
菜单是程序开发中常用的界面元素。合理利用菜单不仅可以使用户操作程序的功能非常方便,还可以提高效率,适应人性化的趋势。以下是菜单设计的方法和技术。
实例001 有历史信息的菜单
在开发图纸管理软件时,需要在菜单上记录用户最近打开的文件或图纸,以便下次使用。如图1所示.1.单击文件菜单下的打开文件子菜单,打开需要查阅的图纸。下次软件运行时,将上次打开的文件名记录在文件菜单的历史菜单中。选择菜单,打开相应的图纸文件。
为了保存最近打开的文件,可以将最近在菜单中打开的文件名和路径保存到事先建立的文件中*.ini在文件中,当系统启动时读取*.ini在数据中建立数组菜单,以显示历史菜单。
注:要建立带有历史信息的菜单,必须先添加一个菜单MenuStrip菜单控件,主窗体IsMdiContainer属性设为True。
(1)创建一个项目,并将其命名为Ex01_默认窗体为01Form1。
(2)从工具箱到Form1窗体添加MenuStrip同时向窗体添加控制器OpenFileDialog控件。创建文件主菜单,创建菜单选项,如打开、关闭、退出等。
(3)主程序代码。
写入打开文件路径INI实现文件的代码如下:
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.FileName = "";
&nbp; 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);
}
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子窗体最大化时,子窗体和主窗体的菜单能够自动的合并。这是如何实现的呢?本例实现了将两个弹出菜单动态的合并成一个弹出菜单的功能。实例效果如图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,同时向窗体添加ContextMenuStrip控件用来设计右键菜单,然后选中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);
}
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.ToolStripItem[] {
item});
}
根据本实例,读者可以实现以下功能。
让右键菜单在子窗体中显示。
让右键菜单在主窗体和子窗体中同时显示。
实例003 像开始菜单一样漂亮的菜单
Windows的开始菜单非常的独特,在菜单的旁边有一条竖着的彩条,彩条中还写着文字。这种独特的菜单能够使程序的界面看起来更加的漂亮。本例中就实现了这种菜单,运行本例弹出“打开菜单”时,就会看到菜单的左边有一个紫色的彩条。实例效果如图1.3所示。
在C# 2.0中,MenuStrip控件中的子项ToolStripMenuItem已经包括了左侧的彩条,实现像开始菜单一样的菜单非常容易,不像在其他计算机语言的开发环境中,需要调用API才可以实现。如果想改变左侧竖着的彩条,只要给对应的菜单项设置相应的图片即可。
注意:如果要在左侧彩条显示文字,只要在对应的图片上加入文字即可。
(1)创建一个项目,将其命名为Ex01_03,默认窗体为Form1。
(2)从工具箱中向Form1窗体添加MenuStrip控件。
(3)为MenuStrip控件添加相应的子项。
(4)为子项添加相应的图片。
根据本实例,读者可以实现以下功能。
将菜单元设置成不同的格式(如图片、文字等)。
在菜单左侧播放动画。
实例004 任务栏托盘菜单
有一些软件通常只是在后台运行,这些进程大部分时间不显示用户界面。可通过单击任务栏状态通知区域的图标来访问的病毒防护程序就是一个示例。Windows窗体中的NotifyIcon控件通常用于显示在后台运行的进程的图标,本实例利用该控件制作了一个任务栏托盘菜单。实例效果如图1.4所示。
要实现程序启动时出现在系统托盘中。必须要为窗体添加NotifyIcon 控件和ContextMenuStrip控件。
注意:必须为NotifyIcon 控件的Icon属性设置图标。
(1)创建一个项目,将其命名为Ex01_04,默认窗体为Form1。
(2)向Form1窗体添加NotifyIcon 控件和ContextMenuStrip控件,并为ContextMenuStrip控件添加子项。
(3)选择NotifyIcon 控件,在其属性窗口中将ContextMenuStrip属性设置为添加到窗体上的ContextMenuStrip控件,并为Icon属性设置图片。
根据本实例,读者可以开发以下程序。
程序启动时不出现界面,直接出现在系统托盘中运行的后台程序。
程序启动时不出现在任务栏中。
实例005 可以拉伸的菜单界面
如果管理程序功能菜单非常多,而用户只使用一些常用菜单,这时,可以将主菜单项下的不常用菜单隐藏起来。此种显示方式类似于对菜单进行拉伸。使用时,只需单击展开菜单,即可显示相应菜单功能。运行本例,效果如图1.5所示。
要实现可以拉伸的菜单,关键是要使用一个开关变量,同时调用ShowDropDown()方法,显示操作后的结果。下面详细介绍一下该方法。
ShowDropDown()方法用来显示与此ToolStripDrop DownItem关联的ToolStripDropDownItem控件。其语法结构如下:
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;
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。
(2)在Form1窗体添加MenuStrip控件,选中MenuStrip控件为其添加子项和级联子项。
根据本实例,读者可以开发以下功能。
大型系统的功能导航。
在窗体四周再增加菜单栏。
1.2 工具栏设计
在菜单栏中将常用的菜单命令以工具栏按钮的形式显示,并作为快速访问方式。工具栏位于菜单栏的下方,由许多命令按钮组成,每个命令按钮上都有一个形象的小图标,以标识命令按钮的功能。由于工具栏这种直观易用的特点,使其已成为Windows应用程序的标准界面。
实例007 带带背景的工具栏
工具栏是窗体的组成部分之一,工具栏中的按钮可以设定完成一些较为常用或重要的功能,本例中设计了一个工具栏,并且为该工具栏作了一些修饰,使工具栏带有背景。背景图案可以透过按钮显示,效果如图1.7所示。
工具栏中的背景是一幅图片,在运行时应该将该图片绘制到工具栏上,在.NET 2.0中,只需将工具栏按钮的BackGroundImage的属性设置为对应的图片即可。
(1)创建一个项目,将其命名为Ex01_07,默认窗体为Form1。
(2)从工具箱中为Form1窗体添加ToolStrip控件,并为工具栏添加相应的按钮。
(3)为工具栏的按钮设置相应的BackGroundImage属性,相应的的图片就会变成按钮的背景。
根据本实例,读者可以开发以下功能。
制作一个带动画效果的工具栏。
制作一个自定义样式的工具栏。
实例008 带浮动工具栏
通常情况下,窗体显示在屏幕的中心。对于使用频率非常高的软件,通常放在屏幕上端以浮动工具栏形式显示。下面通过实例介绍浮动工具栏的设计方法。运行程序,程序可以停在屏幕的任何位置,当窗体失去焦点后,窗体将自动隐藏。效果如图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 (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;
}
根据本实例,读者可以开发以下功能。
制作一个带动画效果的工具栏。
制作一个飘动的工具栏。
实例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属性设置提示内容,就可以轻松实现具有提示功能的工具栏。
根据本实例,读者可以开发以下功能。
具有提示功能的各种控件。
具有提示功能的窗体。
状态栏是用来显示当前程序状态的。状态栏可以分为多个面板,用来显示不同状态下的内容,本节主要介绍了状态栏的用法以及如何在状态栏中添加控件。
实例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 = "";
}
}
根据本实例,读者可以开发以下功能。
运行时设置控件的位置。
动态控制控件的显示。
实例012 带进度条的状态栏
上网浏览网页的读者都用过IE浏览器,读者是否注意到该浏览器的状态栏,在打开网页的过程中,浏览器下边的状态栏中有一个进度条显示当前网页的载入进度,这样的状态栏使界面显得更加丰富多彩,并且非常实用。本例将设计一个带进度条的状态栏,并且在程序运行当中进度条可以显示其进度,该实例运行结果如图1.12所示。
带进度条的状态栏在别的开发环境下实现相对比较复杂,但在.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 (toolStripProgressBar1.Value < toolStripProgressBar1.Maximum)
{
this.toolStripProgressBar1.PerformStep();
}
}
根据本实例,读者可以开发以下功能。
在状态栏中显示时间。
改变进度条的颜色。
实例013 状态栏中加入图标
状态栏已经成为主界面必不可少的部分,状态栏一般用于显示程序状态、当前日期等,在状态栏中添加一张图片会使程序的主界面更有特色。运行本例,效果如图1.13所示。
状态栏中加入图标在.NET 2.0中实现非常容易,只要将对应状态栏面板的Image属性设置为要显示的图片即可。
(1)创建一个项目,将其命名为Ex01_13,默认窗体为Form1。
(2)从工具箱中为Form1窗体添加StatusStrip控件,并为状态栏添加相应的按钮,设置添加的按钮的Image属性为要显示的图片。
根据本实例,读者可以实现以下功能。
将其他控件放置在状态栏中,如进度条。
将其他控件放置在状态栏中,如复选框。
对于一些应用工具软件,界面不但要求人性化、漂亮,还要突出界面功能、使用方便,这样才能吸引用户使用。本节主要介绍了常用的几种菜单界面。
实例014 OutLook界面
程序主界面包括菜单栏、工具栏、状态栏和树状视图。OutLook界面美观、友好,是一个很实用的程序主界面,并且菜单栏和工具栏是可移动的。运行本例效果如图1.14所示。
图1.14 Out Look界面
一般程序的菜单栏和工具栏是不可移动的,但是只要将MenuStrip和ToolStrip控件的AllowItemRecorder属性设为True就可以移动。在本例中使用MenuStrip控件制作菜单栏,使用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控件,用来设计主菜单;添加ToolStrip控件,用来设计工具栏;添加StatusStrip控件,用来设计状态栏;添加ImageList控件和TreeVew控件,用来设计树结构。
(3)分别为MenuStrip控件、ToolStrip控件、ImageList控件和TreeVew控件添加子项,将MenuStrip控件和ToolStrip控件的AllowItemRecorder属性设为True,并将ToolStrip控件的每个子项的DisplayStyle属性设置为“ImageAndText”。下面详细介绍这几个属性。
根据本实例,读者可以实现以下功能。
制作一个系统菜单。
制作一个导航界面。
实例015 带带导航菜单的主界面
在窗体界面中,菜单栏是不可缺少的重要组成部分。本实例是用其他的控件来制作一个摸拟菜单栏。运行程序,单击窗体上面的按钮,将会在按钮的下面显示一个下拉列表。如图1.15所示。
该实例中主要使用Button控件和ListView控件制作导航菜单界面。在对ListView控件添加菜单信息时,必需在前面写入添加语句,如Listview.Items.Add,否则添加的菜单信息将替换前一条信息。单击相应的按钮时,应首先对ListView控件进行清空,否则在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();
listView1.LargeImageList = 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;
button1.SendToBack();
button1.Dock = DockStyle.Top;
button3.Dock = DockStyle.Bottom;
listView1.Dock = DockStyle.Bottom;
listView1.Clear();
listView1.Items.Add("近期工作记录", "近期工作记录", 3);
listView1.Items.Add("近期工作计划", "近期工作计划", 4);
}
添加编辑按钮的ListView控件显示内容的实现代码如下:
private void button3_Click_1(object sender, EventArgs e)
{
listView1.Dock = DockStyle.None;
button3.SendToBack();
button3.Dock = DockStyle.Top;
button2.SendToBack();
button2.Dock = DockStyle.Top;
button1.SendToBack();
button1.Dock = DockStyle.Top;
listView1.Dock = DockStyle.Bottom;
listView1.Clear();
listView1.Items.Add("编辑工作进度报告", "编辑工作进度报告", 5);
listView1.Items.Add("编辑项目设计图", "编辑项目设计图", 6);
}
添加设置按钮的ListView控件显示内容的实现代码如下:
private void button1_Click_1(object sender, EventArgs e)
{
listView1.Dock = DockStyle.None;
button1.Dock = DockStyle.Top;
button2.Dock = DockStyle.Bottom;
button3.SendToBack();
button3.Dock = DockStyle.Bottom;
listView1.BringToFront();
listView1.Dock = DockStyle.Bottom;
listView1.Clear();
listView1.Items.Add("设置上下班时间", "设置上下班时间", 0);
listView1.Items.Add("是否启用短信提醒", "是否启用短信提醒",1);
listView1.Items.Add("设置密码", "设置密码", 2);
}
根据本实例,读者可以实现以下功能。
制作一个系统菜单。
制作大型系统的导航界面。
实例016 图形化的导航界面
如果以按钮来代替菜单的功能,会使界面更具有个性化。使操作者更易于操作。下面介绍按钮显示菜单的设计方法。运行本例,效果如图1.16所示。
图1.16 图形化的导航界面
本实例主要通过设置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)
{
//使子项可见
button5.Visible = true;
button6.Visible = true;
button7.Visible = true;
}
private void button2_Click(object sender, EventArgs e)
{
//使子项可见
button8.Visible = true;
button9.Visible = true;
button10.Visible = true;
}
private void button3_Click(object sender, EventArgs e)
{
//使子项可见
button11.Visible = true;
button12.Visible = true;
button13.Visible = true;
}
根据本实例,读者可以实现以下功能。
制作动态的按钮界面。
制作动态的图片界面。
现在有很多开发人员都将界面制作成不同类型的样式,这样可以使界面更加形象化。本节主要介绍了如何对程序界面进行特色化设计,如类似QQ、Windows XP的界面等。
实例017 菜类QQ的程序界面
一般程序都是以菜单栏和工具栏的形式调用其他功能模块,如果以动态的类似QQ的程序界面来调用其他功能模块,将会给用户一种新鲜的感觉,使用户对软件更感兴趣。实例运行结果如图1.17所示。
本例主要使用Button控件来完成布局,使用ListView控件来显示有图标的功能菜单。ListView控件的常用属性及说明如下。
1.ListView.Items属性
使用该属性可直接访问表示列表中项目的ListItem对象。其结构如下:
public ListViewItemCollection Items { get; }
l 属性值: ListView.ListViewItemCollection包含ListView控件中所有的项。
2.ListView.Dock属性
获取或设置哪些控件边框停靠到其父控件并确定控件如何随其父级一起调整大小。其结构如下:
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)
{
listView1.Dock = DockStyle.None;
button1.Dock = DockStyle.Top;
button2.Dock = DockStyle.Bottom;
button3.SendToBack();
button3.Dock = DockStyle.Bottom;
listView1.BringToFront();
listView1.Dock = DockStyle.Bottom;
listView1.Clear();
listView1.Items.Add("小猪", "小猪", 0);
listView1.Items.Add("小狗", "小狗", 1);
listView1.Items.Add("娇娇", "娇娇", 2);
}
添加默认时选项内容的实现代码如下:
private void Form1_Load(object sender, EventArgs e)
{
listView1.Clear();
listView1.LargeImageList = imageList1;
listView1.Items.Add("小猪", "小猪", 0);
listView1.Items.Add("小狗", "小狗", 1);
listView1.Items.Add("娇娇", "娇娇", 2);
}
添加“陌生人”选项内容的实现代码如下:
private void button2_Click(object sender, EventArgs e)
{
listView1.Dock = DockStyle.None;
button2.Dock = DockStyle.Top;
button1.SendToBack();
button1.Dock = DockStyle.Top;
button3.Dock = DockStyle.Bottom;
listView1.Dock = DockStyle.Bottom;
listView1.Clear();
listView1.Items.Add("北风", "北风", 3);
}
添加“黑名单”选项内容的实现代码如下:
private void button3_Click(object sender, EventArgs e)
{
listView1.Dock = DockStyle.None;
button3.SendToBack();
button3.Dock = DockStyle.Top;
button2.SendToBack();
button2.Dock = DockStyle.Top;
button1.SendToBack();
button1.Dock = DockStyle.Top;
listView1.Dock = DockStyle.Bottom;
listView1.Clear();
listView1.Items.Add("冰雨", "冰雨", 5);
}
根据本实例,读者可以实现以下功能。
根据数据库信息形成相应的功能列表。
制作聊天界面。
实例018 类似windows xp的程序界面
在Windows XP环境下打开控制面板,会发现左侧的导航界面很实用。双击展开按钮,导航栏功能显示出来,双击收缩按钮,导航按钮收缩。下面通过实例介绍此种主窗体的设计方法。运行本例,效果如图1.18所示。
PictureBox控件是一个图像显示控件,该控件主要以其中的Image属性存储图像数据。其详细介绍如下。
PictureBox.Image属性用来获取或设置 PictureBox 显示的图像,其语法格式如下:
public Image Image { get; set; }
图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;
pictureBox5.Visible = false;
pictureBox4.Visible = false;
label2.Visible = false;
label3.Visible = false;
pictureBox6.Top -= i;
pictureBox8.Top -= i;
label4.Top -= i;
label5.Top -= i;
label6.Top -= i;
label10.Top -= i;
label7.Top -= i;
label8.Top -= i;
label9.Top -= i;
pictureBox9.Top -= i;
pictureBox11.Top -= i;
}
双击“向上箭头”的实现代码如下:
private void pictureBox2_Click(object sender, EventArgs e)
{
//展开子项
if (pictureBox5.Visible == false)
{
int i;
i = 80;
pictureBox5.Visible = true;
pictureBox4.Visible = true;
label2.Visible = true;
label3.Visible = true;
pictureBox6.Top += i;
pictureBox8.Top += i;
label4.Top += i;
label5.Top += i;
label6.Top += i;
label10.Top += i;
label7.Top += i;
label8.Top += i;
label9.Top += i;
pictureBox9.Top += i;
pictureBox11.Top += i;
}
}
private void Form1_Load(object sender, EventArgs e)
{
SetStyle(ControlStyles.SupportsTransparentBackColor,true);
}
注意:在对控件的高度进行递增或递减的时候,数值不要太小。
根据本实例,读者可以实现以下功能。
制作Windows XP控制面板。
制作Win