C#实例:5个.net经典例子(窗体与界面设计)

实例001  带历史信息的菜单

实例说明

在开发图纸管理软件时,要求在菜单上记录用户最近打开的档案或图纸,以方便下次使用。如图1.1所示,单击“文件”菜单下的“打开文件”子菜单,打开需要查阅的图纸。下次运行该软件时,上次打开的文件名记录到“文件”菜单的历史菜单中,选择该菜单,即可打开相应的图纸文件。

技术要点

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

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

实现过程

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

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

(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);

}

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;

}

}

举一反三

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

制作显示\隐藏工具栏。

合并菜单栏。

查看全部:http://wenku.it168.com/d_000627728.shtml

时间: 2024-08-01 06:32:45

C#实例:5个.net经典例子(窗体与界面设计)的相关文章

C#实例.net_经典例子400个

一共470多例winform 界面特效的源码. 窗体与界面设计... 9 实例001  带历史信息的菜单    10 实例002  菜单动态合并    12 实例003  像开始菜单一样漂亮的菜单... 14 实例004  任务栏托盘菜单    15 实例005  可以拉伸的菜单界面    16 实例006  菜级联菜单    18 1.2  工具栏设计... 19 实例007  带带背景的工具栏    19 实例008  带浮动工具栏    20 实例009  在带下拉菜单的工具栏... 21

python经典例子

http://wangwei007.blog.51cto.com/68019/1106735  检查Linux系统日志error和mysql错误日志的脚本 http://wangwei007.blog.51cto.com/68019/1102836  pickle http://wangwei007.blog.51cto.com/68019/1045577  python用zipfile模块打包文件或是目录.解压zip文件实例 http://blog.163.com/kefan_1987/blo

递归的几个经典例子

注意:构造方法不可递归,否则是无限创建对象; 递归的几个经典例子: 1.HannoiTower 1 import java.util.Scanner; 2 public class HanoiTower{ 3 //level代表盘子个数;三个char类型代表柱子 4 public static void moveDish(int level, char from, char inter, char to){ 5 if(level == 1){ 6 System.out.println("从&qu

小猪的数据结构辅助教程——2.5 经典例子:约瑟夫问题的解决

小猪的数据结构辅助教程--2.5 经典例子:约瑟夫问题的解决 标签(空格分隔): 数据结构 约瑟夫问题的解析 关于问题的故事背景就不提了,我们直接说这个问题的内容吧: 一堆人,围成一个圈,然后规定一个数N,然后依次报数,当报数到N,这个人自杀,其他人鼓掌!啪啪啪, 接着又从1开始报数,报到N又自杀-以此类推,直到死剩最后一个人,那么游戏结束! 这就是问题,而我们用计算机模拟的话,用户输入:N(参与人数),M(第几个人死),结果返回最后一个人! 类似的问题有跳海问题,猴子选王等,下面我们就以N =

信号量基础和两个经典例子

信号量基础和两个经典例子 信号量(semaphore) 用于进程中传递信号的一个整数值. 三个操作: 1.一个信号量可以初始化为非负值 2.semWait操作可以使信号量减1,若信号量的值为负,则执行semWait的进程被阻塞.否则进程继续执行. 3.semSignal操作使信号量加1.若信号量的值小于等于0,则被semWait操作阻塞的进程讲被接触阻塞. ps: semWait对应P原语,semSignal对应V原语. 信号量以及PV原语的C语言定义如下 struct semaphore {

storm经典例子的wordcount的实现

storm有个经典的例子wordcount,其实这几乎可以说是大数据的经典例子了,mapreduce也会有这个例子.但是storm给的例子包里的WordCountTopology用到了python的调用,直接用eclipse跑起来的话会报错,这里做了个小改动. 1.WordCountTopology.java package storm.starter; import backtype.storm.Config; import backtype.storm.LocalCluster; impor

小猪的数据结构辅助教程——2.6 经典例子:魔术师发牌问题和拉丁方阵问题

小猪的数据结构辅助教程--2.6 经典例子:魔术师发牌问题和拉丁方阵问题 标签(空格分隔): 数据结构 本节引言: 本节继续带来的是循环链表的两个经典例子,分别是魔术师发牌问题和拉丁方阵问题! 1.魔术师发牌问题 问题描述: 魔术师利用一副牌中的13张黑桃牌,预先将他们排好后叠放在一起,牌面朝下.对观众说:"我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?现场演示."魔术师将牌堆最上面的哪张排数为1,把他翻过来正好是黑桃A,将黑桃A从牌堆抽出放在桌子上,第二次数1.2

linux Posix 信号量 三 (经典例子)

本文将阐述一下信号量的作用及经典例子,当中包括“<越狱>寄信”,“家庭吃水果”,“五子棋”,“接力赛跑”,“读者写者”,“四方恋爱”等 首先,讲 semWait操作(P操作)和semSignal操作(V操作)的一些基本原则.(接下来同意称为P,V操作) 1. P操作,s - -,if(s<0)阻塞自己 2. V操作,s++,if(s<=0)唤醒一个其他进程 3. P,V操作时原语(通俗讲,就是执行PV操作时时不能被打打断的) 4. P,V操作总是成对出现的.P:资源申请/分配:V操

javascript经典例子

javascript经典例子  一.验证类 1.数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的ID的验证) 1.3 负整数的验证 1.4 整数不能大于iMax 1.5 整数不能小于iMin 2.时间类 2.1 短时间,形如 (13:04:06) 2.2 短日期,形如 (2003-12-05) 2.3 长时间,形如 (2003-12-05 13:04:06) 2.4 只有年和月.形如(2003-05,或者2003-5) 2.5 只有小时和分钟,形如(12:03) 3.表单类 3.1