Visual C#的菜单编程

 

 

菜单是软件界面设计的一个重要组成方面。它描述着一个软件的大致功能和风格。所以在程序设计中处理好、设计好菜单,对于一个软件开发是否成功有着比较重要的意义。

Visual C#是.Net框架中的一个重要组成部分,也是微软公司推出的下一代主流程序开发语言。它在设计、开发程序界面的时候和以前的某些程序开发语言有所不同。这一点也表现在其的菜单编程方面。本文就是来探讨一下如何用Visual C#进行菜单编程。

面向菜单编程中遇到的主要的问题大致可以分为二种:添加菜单项、删除菜单项。当然在处理以上二类问题时候,还会遇到诸如:如何添加菜单项所对应的事件,如何为菜单项添加快捷键等一些小的问题。下面就这些问题来具体进行论述。

一. 程序设计和运行环境 数据挖掘实验室

(1)微软视窗2000服务器版本

(2).Net FrameWork SDK Beta 2

二. 程序的主要功能

在本程序中,已经定义了二个主菜单项。程序的主要功能是通过"添加菜单"按钮在第二个主菜单项下(即"运行菜单项目"下)加入一个子菜单。通过"删除菜单"按钮删除第二个主菜单项中的最后一个子菜单。下图01是"添加菜单"按钮按动三次后的界面,图02是在"添加按钮"按动三次后,在按动"删除菜单"按钮后的程序运行界面:

数据挖掘实验室



图01:"添加菜单"按钮按动三次后的界面




图02:在"添加按钮"按动三次后,在按动"删除菜单"按钮后的界面



三. 菜单设计中遇到的主要问题及解决办法 数据挖掘交友

(1)如何动态加入一个菜单项目

在.Net FrameWork SDK中有一个叫做System.Windows.Forms.dll文件,其中定义了一个名为System.Windows.Froms的名称空间,此名称空间中封装了很多和界面设计相关的类、对象。Visual C#在进行菜单编程的时候就需要用到在此名称空间中定义的二个对象:MainMenu、MenuItem。用过Delphi的程序员都知道在在Delphi中,也有MainMenu这个对象,MainMenu在程序设计中表现为菜单项的容器,而MenuItem就是要往这个容器中添加的内容。所以在一个窗体中这种容器往往只需要一个,即需要一个MainMenu,但却往往要多个MenuItem,即需要多个菜单项。通过以下二个例子来具体说明如何进行菜单加入操作

例01:只是在窗体中加入一个主菜单项目:

数据挖掘论坛

using System.Windows.Forms ;

class RuntimeMenus : Form

{

private MainMenu myMenu ;

private MenuItem mnuFile ;

public RuntimeMenus ( )

{

//初始化 Main Menus

myMenu = new MainMenu ( ) ;

mnuFile = new MenuItem ( "文件" ) ;

x = new MenuItem ( "文件" ) ;

//往 Main Menu里面加入菜单

myMenu.MenuItems.Add ( mnuFile ) ;

this.Menu = myMenu ;

}

public static void Main ( )

{

Application.Run ( new RuntimeMenus ( ) ) ;

}

}


成功程序编译后运行界面如下:



using System ;

using System.Windows.Forms ;

class RuntimeMenus : Form

{

private MainMenu myMenu ;

private MenuItem mnuFile,mnuExit ;

public RuntimeMenus ( )

{

//初始化 Main Menus

myMenu = new MainMenu ( ) ;

mnuFile = new MenuItem ( "文件" ) ;

//设定子菜单的响应事件和快捷键

mnuExit = new MenuItem ( "退出" , new EventHandler ( btnClose_Click ) , Shortcut.CtrlX ) ;

//往 Main Menu里面加入菜单

myMenu.MenuItems.Add ( mnuFile ) ;

mnuFile.MenuItems.Add ( mnuExit ) ;

this.Menu = myMenu ;

}

protected void btnClose_Click ( object sender , EventArgs e )

{

Application.Exit ( ) ; 数据挖掘工具

}

public static void Main ( )

{

Application.Run ( new RuntimeMenus ( ) ) ;

}

}



成功编译此例子后,运行就可以得到如下界面 数据挖掘交友



图04:加入子菜单并设定快捷键和响应事件



通过以上二个小例子,我们就可以基本掌握如何正确添加主菜单和子菜单,并为之设定快捷键和响应事件。

(2)如何动态删除菜单:

删除菜单比起添加一个菜单要来的相对容易了许多。在删除的时候,主要用到的是MenuItem对象的RemoveAt方法,此方法说带的参数是一个整型,是一个子菜单在主菜单中由上到下的相对位置,譬如以下语言:

mnuRtime.MenuItems.RemoveAt ( 2 ) ;



意思是在mnuRtime主菜单中删除由上到下的第三个子菜单。(由上至下第一个对应的指是"0")。

四. 程序源代码(menu.cs) 数据挖掘交友

using System ;

using System.Windows.Forms ;

using System.Drawing ;

using System.ComponentModel ;

class RuntimeMenus : Form

{

private MainMenu myMenu ;

private MenuItem mnuFile , mnuExit , mnuRtime ;

private Button btnAdd , btnRemove , btnClose ;

static int i ;

public RuntimeMenus ( )

{

InitializeComponents ( ) ;

}

public void InitializeComponents ( )

{

//初始化 Main Menus

myMenu = new MainMenu ( ) ;

mnuFile = new MenuItem ( "文件" ) ;

mnuRtime = new MenuItem ( "运行菜单项目" ) ;

//往 Main Menu里面加入菜单

myMenu.MenuItems.Add ( mnuFile ) ;

myMenu.MenuItems.Add ( mnuRtime ) ; 数据挖掘交友

//初始化 Exit 菜单项,设定了事件和快捷键

mnuExit = new MenuItem ( "退出" , new EventHandler ( btnClose_Click ) , Shortcut.CtrlX ) ;

//把菜单项加入到文件File菜单中

mnuFile.MenuItems.Add ( mnuExit ) ;

  数据挖掘交友

//初始化添加按钮

btnAdd = new Button ( ) ;

btnAdd.Location = new Point ( 275 , 20 ) ;

btnAdd.Text = "添加菜单" ;

btnAdd.Click += new EventHandler ( btnAdd_Click ) ;

btnAdd.Size = new Size ( 100 , 30 ) ; 数据挖掘交友

//初始化删除按钮

btnRemove = new Button ( ) ;

btnRemove.Location = new Point ( 275 , 60 ) ;

btnRemove.Text = "删除菜单" ;

btnRemove.Click += new EventHandler ( btnRemove_Click ) ;

btnRemove.Size = new Size ( 100 , 30 ) ; 数据挖掘工具

//初始化关闭按钮

btnClose = new Button ( ) ;

btnClose.Location = new Point ( 275 , 100 ) ;

btnClose.Text = "退出" ;

btnClose.Click += new EventHandler ( btnClose_Click ) ;

btnClose.Size = new Size ( 100 , 30 ) ;

//在窗体中加入按钮

this.Controls.Add ( btnAdd ) ;

this.Controls.Add ( btnRemove ) ;

this.Controls.Add ( btnClose ) ; 数据挖掘论坛

//设置窗体的属性

this.MaximizeBox = false ;

this.MinimizeBox = false ;

this.Text = "动态处理菜单程序窗口!" ;

// 设定本窗体的MainMenu

this.Menu = myMenu ;

this.Size = new Size ( 400 , 250 ) ;

this.CancelButton = btnClose ;

this.StartPosition = FormStartPosition.CenterScreen ;

} 数据挖掘工具

//以下是动态加入菜单项

protected void btnAdd_Click ( object sender , EventArgs e )

{

mnuRtime.MenuItems.Add ( "运行菜单 " + ( i + 1 ) , new EventHandler ( mnuRtime_Click ) ) ;

i++ ;

}

//以下是动态删除菜单项

protected void btnRemove_Click ( object sender , EventArgs e )

{

mnuRtime.MenuItems.RemoveAt ( i - 1 ) ;

i = i - 1 ;

} 数据挖掘研究院

protected void mnuRtime_Click ( object sender , EventArgs e )

{

String s = sender.ToString ( ) ;

MessageBox.Show ( "你选择的是 " + s.Substring ( 28 ) , "菜单选择窗口!" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;

}

//退出应用程序

protected void btnClose_Click ( object sender , EventArgs e )

{

Application.Exit ( ) ;

} 数据挖掘交友

public static void Main ( )

{

Application.Run ( new RuntimeMenus ( ) ) ;

}

} 数据挖掘交友

按照以下语句编译完menu.cs

csc /t:winexe /r:system.dll /r:system.windows.forms.dll /r:system.drawing.dll menu.cs

就可以得到menu.exe ,执行此文件就可以得到图01和图02所示的运行界面了。

五. 总结 数据挖掘交友

本文主要是介绍了在用Visual C#进行有关菜单编程中,可能遇到有些问题。在解决这些问题的时候主要用到的是名称空间System.Windows.Forms中定义的二个对象MainMenu、MenuItem和这二个对象中定义的一些方法。当然这些方法还有一些其他的用法,有兴趣的读者可以参考有关书籍和浏览MSDN网站。

[数据挖掘专家] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:用Visual C#编写仿MSN Messager的滚动提示窗口
下一篇:C#操作技巧的数据类型之间的转换
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • 挑战C#学习的最快速度
  • C#模仿QQ截图功能
  • C# 关于开机自动运行程序方式之一
  • 第一章 C#简介
  • 利用C#实现分布式数据库查询
  • Visual Studio 2005 Hands-On Tutorial - P
  • C#入门代码
  • .NET架构与模式探索
  • 用C#代码编写的SN快速输入工具
  • C# 关于开机自动运行程序方式之一
  • 论坛最新话题
  • Foundations of Statistical Natural Langu
  • Game Theory meet Data Mining: A Recent P
  • System Building: How does it help or hin
  • 数据挖掘与Clementine培训
  • 新手报到
  • 求 SASEM 客户流失预测分析
  • 数据挖掘工程师/搜索研究院—北京——无线
  • 数据挖掘入门介绍(如何着手数据挖掘)
  • Information Overload Survey Results
  • The INEX 2005 Workshop on Element Retrie
  • 相关资讯
  • 彻底剖析C# 2.0泛型类的创建和使用
  • 对C# 2.0中匿名方法的怀疑分析
  • EasySP管理解决方案基于Microsoft .NET架构
  • .NET架构与模式探索
  • .NET架构的核心开发技术
  • 用C#代码编写的SN快速输入工具
  • C#链接数据库技巧
  • C#设计模式编程之抽象工厂模式新解
  • 第一章 C#简介
  • 第七章 异常处理
  • 数据挖掘实验室资料
  • 数据挖掘博客地址
  • 数据挖掘实验室网站地址
  • Prepare for Medicare audits by using dat
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静