系统菜单和代表

发布于 01-06 23:37 字数 479 浏览 3 评论 0原文

正如您所看到的系统菜单,它们的语法如下:

MainMenu mainMenu = new MainMenu();
MenuItem fileMenuItem = new MenuItem("File");

mainMenu.MenuItems.Add(fileMenuItem);
this.Menu = mainMenu;

要为单击事件编写事件,我可以这样做吗?如何 ?

fileMenuItem.MenuItems.Add(new MenuItem("New",
MyMenuItemEventArgs(this, new MyMenuItemEventArgs("New")))

因此,在 MyMenuItemEventArgs 中,我可以将我的操作传递给一个可操作的函数。在本例中,我传递了“New”。

我不想编写 10 个或更多处理程序,我只想编写一个具有许多事件参数的处理程序。

As you have seen the system menus , they have a syntax like this :

MainMenu mainMenu = new MainMenu();
MenuItem fileMenuItem = new MenuItem("File");

mainMenu.MenuItems.Add(fileMenuItem);
this.Menu = mainMenu;

To Write Events For Click events , Can I Do something like this ? how ?

fileMenuItem.MenuItems.Add(new MenuItem("New",
MyMenuItemEventArgs(this, new MyMenuItemEventArgs("New")))

So In MyMenuItemEventArgs , I Can pass my opearion to one function which operates.in this case I have passed 'New'.

I don't want to write 10 or more handlers , i want just write one handler with many Event args.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

指尖上的星空2025-01-13 23:37:21

您应该实例化一个新的 menuItem,然后使用 Click 属性添加处理程序。

MenuItem menuItem1=new MenuItem("Item text");

menuItem1.Click += new System.EventHandler(handler_method);

之后您可以将其添加到您的菜单中:

fileMenuItem.MenuItems.Add(menuItem1);

You should instantiate a new menuItem, then use the Click attribute to add the handler.

MenuItem menuItem1=new MenuItem("Item text");

menuItem1.Click += new System.EventHandler(handler_method);

After that you can add it to your menu:

fileMenuItem.MenuItems.Add(menuItem1);
怪我鬧2025-01-13 23:37:21

EventArgs 参数的值由触发事件的对象提供,在本例中为 MenuItem。因此,在一个处理程序中处理多个 MenuItem 对象的 OnClick 事件的唯一方法是使用 sender 参数。您可以使用如下代码检查单击了哪个菜单项:

var mainMenu = new MainMenu();
var fileMenuItem = new MenuItem("file");
var openMenuItem = new MenuItem("open", OnClick);
var exitMenuItem = new MenuItem("exit", OnClick);

openMenuItem.Name = "open";
exitMenuItem.Name = "exit";

fileMenuItem.MenuItems.Add(openMenuItem);
fileMenuItem.MenuItems.Add(exitMenuItem);

mainMenu.MenuItems.Add(fileMenuItem);
this.Menu = mainMenu;

在事件处理程序中:

private void OnClick(object sender, EventArgs eventArgs)
{
    var senderName = ((MenuItem) sender).Name;
    if (senderName == "open")
    {
        //open was clicked
    }
    else if (senderName == "exit")
    {
        //exit was clicked
    }
}

The value of EventArgs parameter is provided by the object firing the event, which is MenuItem in this case. So the only way to handle the OnClick event of multiple MenuItem objects in one handler is by using the sender parameter. You could check which menu item was clicked using some code like this:

var mainMenu = new MainMenu();
var fileMenuItem = new MenuItem("file");
var openMenuItem = new MenuItem("open", OnClick);
var exitMenuItem = new MenuItem("exit", OnClick);

openMenuItem.Name = "open";
exitMenuItem.Name = "exit";

fileMenuItem.MenuItems.Add(openMenuItem);
fileMenuItem.MenuItems.Add(exitMenuItem);

mainMenu.MenuItems.Add(fileMenuItem);
this.Menu = mainMenu;

And in the event handler:

private void OnClick(object sender, EventArgs eventArgs)
{
    var senderName = ((MenuItem) sender).Name;
    if (senderName == "open")
    {
        //open was clicked
    }
    else if (senderName == "exit")
    {
        //exit was clicked
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文