科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Windows Forms菜单设计全攻略

Windows Forms菜单设计全攻略

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

怎样才能掌握Windows Forms菜单的实质,怎样才能为所欲为的进行窗体菜单程序的开发呢

作者:蔡世友 来源:yesky 2007年11月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
五、响应菜单事件

  在菜单编程中,我们需要点击菜单项使程序执行一个命令或者是改变菜单的状态等。这样才能使菜单与用户达到有好的交互。这就需要编写菜单事件的响应函数,使其执行相应的功能。

  在Windows Forms中,MenuItem为我们提供了很多的事件,比如当你在菜单项上点击时引发的Click事件,在拖动菜单项时引发的DrawItem事件及当选择菜单项时引发的Select事件等。通过为这些事件编写响应方法,我们就可以使用菜单来控制程序了。

  那么如何为一个事件添加响应方法呢?在C#中,增加了一个新的数据类型delegate(代表)来解决事件处理问题。代表数据类型非常类似于C语言中的指针,其与指针不同的是,其是代码是安全的,可管理的。通过使用delegate(代表),你可以通过“+=”(加等于)操作符非常容易地为.Net对象中的一个事件添加一个甚至多个响应方法;还可以通过非常简单的“-=”(减等于)操作符取消这些响应方法。如下面为一个按钮(button1)Click事件添加响应方法的代码:

button1.Click+= new System.EventHandler(Test);

  其中Test函数说明如下:

private void Test(object sender, System.EventArgs e)
{
file://想要执行的具体代码。
}

  在上面对事件响应方法Test()的定义中,有两个参数,一个分别表示引发事件的对象(object)sender,由于引发事件的对象不可预知的,因此我们把其声明成为object类型,所有的对象都适用;另一个代表引发事件的具体信息(如引发事件时鼠标的x,y值等),由于各种类型的事件中可能不同,这要根据类中事件成员的说明决定。那么在编程中怎么知道使用哪种类型呢,这可以通过查看类中事件的声明,如上面对于Button类Click事件的定义(该定义直接从Control中继承):

public event EventHandler Click;

   在上面声明事件的语句中,Eventhandler是一个delegate(代表)类型,其是如下定义的:

public delegate void EventHandler(object sender,EventArgs e);

  与所有的.Net对象一样,要为一个菜单项添加Click事件的响应方法也可以通过类似的方法进行,如下所示:

this.Menu=new MainMenu(new MenuItem[]{new MenuItem(“File”),new MenuItem(“Edit”)});

this.Menu.MenuItems[0].Click+= new System.EventHandler(Test);

this.Menu.MenuItems[0].Click+= new System.EventHandler(menuItem2_Click);


private void Test(object sender, System.EventArgs e)
{
file://想要执行的具体代码。
}
private void MenuItem2_Click(object sender, System.EventArgs e)
{
MessageBox.Show("你点击了第二个菜单项","提示信息");//弹出一个对话框,显示提示信息。

}

  这样,当你点击菜单项时,程序可以执行相应的功能。而要为一个菜单项(如menuItem1)添加DrawItem(拖动)事件响应方法,则可以通过下面的语句实现:

menuItem1.DrawItem+=new System.Windows.Forms.DrawItemEventHandler(MyMethod);//menuItem1为MenuItem对象

private void MyMethod(object sender,DrawItemEventArgs e)//注意函数的弟二个参数
{
MessageBox.Show("DrawItem事件引发了","提示信息");//弹出一个对话框,显示提示信息。

}

  前面我们讲了菜单项是构成各种菜单的基本元素,由于我们添加事件响应方法是直接通过访问菜单项进行的,因此为菜单添加事件响应方法与主菜单或弹出式菜单无关。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章