Как различить guish вырезать событие и скопировать событие при использовании только функции с devexpress - PullRequest
0 голосов
/ 30 марта 2020

Я начинаю изучать класс BarManager с 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(). Так как различить guish вырезать событие и скопировать событие при использовании только этой функции?

1 Ответ

1 голос
/ 30 марта 2020

Вместо обработки события ItemClick в BarManager вы можете назначить отдельный обработчик события ItemClick каждому элементу панели. Это упрощает распознавание guish того, какой BarButtonItem инициировал щелчок.

Если вы не хотите этого делать, вам нужно будет проверить, есть ли параметр e.Item в обработчике ItemClick в BarManager чтобы определить, какой BarButtonItem произвел щелчок.

...