首页 > 解决方案 > 仅使用devexpress的功能时如何区分剪切事件和复制事件

问题描述

我开始从Devexpress.com. 但是当我阅读这段代码时:

> using DevExpress.XtraBars;

private void Form1_Load(object sender, EventArgs e) {
    BarManager barManager = new BarManager();
    barManager.Form = this;
    // Prevent excessive updates while adding and customizing bars and bar items. 
    // The BeginUpdate must match the EndUpdate method. 
    barManager.BeginUpdate();
    // Create two bars and dock them to the top of the form. 
    // Bar1 - is a main menu, which is stretched to match the form's width. 
    // Bar2 - is a regular bar. 
    Bar bar1 = new Bar(barManager, "My MainMenu");
    Bar bar2 = new Bar(barManager, "My Bar");
    bar1.DockStyle = BarDockStyle.Top;
    bar2.DockStyle = BarDockStyle.Top;
    // Position the bar1 above the bar2 
    bar1.DockRow = 0;
    // The bar1 must act as the main menu. 
    barManager.MainMenu = bar1;

    // Create bar items for the bar1 and bar2 
    BarSubItem subMenuFile = new BarSubItem(barManager, "File");
    BarSubItem subMenuEdit = new BarSubItem(barManager, "Edit");
    BarSubItem subMenuView = new BarSubItem(barManager, "View");

    BarButtonItem buttonOpen = new BarButtonItem(barManager, "Open");
    BarButtonItem buttonExit = new BarButtonItem(barManager, "Exit");
    BarButtonItem buttonCopy = new BarButtonItem(barManager, "Copy");
    BarButtonItem buttonCut = new BarButtonItem(barManager, "Cut");
    BarButtonItem buttonViewOutput = new BarButtonItem(barManager, "Output");

    subMenuFile.AddItems(new BarItem[] { buttonOpen, buttonExit});
    subMenuEdit.AddItems(new BarItem[] { buttonCopy, buttonCut});
    subMenuView.AddItem(buttonViewOutput);

    //Add the sub-menus to the bar1 
    bar1.AddItems(new BarItem[] {subMenuFile, subMenuEdit, subMenuView });

    // Add the buttonViewOutput to the bar2. 
    bar2.AddItem(buttonViewOutput);

    // A handler to process clicks on bar items 
    barManager.ItemClick += new ItemClickEventHandler(barManager_ItemClick);     

    barManager.EndUpdate();
}

void barManager_ItemClick(object sender, ItemClickEventArgs e) {
    BarSubItem subMenu = e.Item as BarSubItem;
    if (subMenu != null) return;
    MessageBox.Show("Item '" + e.Item.Caption + "' has been clicked");
}

一切正常,它只是显示按钮的标题。但实际上,当用户单击剪切按钮时 -> 动作剪切就可以了(单击copy button=> 动作复制就可以了)。但是剪切事件和复制事件都使用相同的功能barManager_ItemClick()。那么只使用这个功能如何区分剪切事件和复制事件呢?

标签: c#devexpressdevexpress-windows-ui

解决方案


除了处理 BarManager 的 ItemClick 事件,您可以为每个栏项分配一个单独的ItemClick 事件处理程序。这样可以更容易地区分哪个 BarButtonItem 发起了点击。

如果您不想这样做,则需要测试 BarManager 的 ItemClick 处理程序中的 e.Item 参数是否确定是哪个 BarButtonItem 触发了单击。


推荐阅读