Добавление элементов в ToolStrip во время выполнения

Здравствуйте, у меня есть ToolStripMenu с меню «Избранное», в которое я хочу добавить подэлементы во время моего приложения WinForms во время выполнения. У меня есть datagridview, по которому я щелкаю правой кнопкой мыши, чтобы отобразить контекстное меню с опцией «Добавить в избранное». Когда это событие запускается, я хотел бы добавить элемент, используя, возможно, некоторый текст из выбранной строки из представления данных (это я уже знаю, как это сделать) в это меню «Избранное». Сложность в том, что мне нужно создать код для моего события newlyCreatedToolStripMenuItem_Click. Я определю, как сохранить мой список избранного позже.

Итак, мы собираемся:

Щелкните правой кнопкой мыши datagridview строку для «Джона Смита».

Выберите «Добавить в избранное» из ContextMenu.

В Избранное ToolStripMenu добавлен новый элемент с надписью «Джон Смит».

Нажатие на «Джон Смит» ToopStripMenuItem запускает действие (например, выбор этой строки в строке daragridview и т. д.).

Есть хорошие стартовые идеи?


person ikathegreat    schedule 17.05.2012    source источник


Ответы (2)


Если я вас правильно понял, я думаю, что это именно то, что вы хотите:

    private void buttonAddFav_Click(object sender, EventArgs e)
    {
        ToolStripItem item = new ToolStripMenuItem();
        //Name that will apear on the menu
        item.Text = "Jhon Smith";
        //Put in the Name property whatever neccessery to retrive your data on click event
        item.Name = "GridViewRowID or DataKeyID";
        //On-Click event
        item.Click += new EventHandler(item_Click);
        //Add the submenu to the parent menu
        favToolStripMenuItem.DropDownItems.Add(item);
    }

    void item_Click(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }
person yahya kh    schedule 17.05.2012

Это довольно просто. Вам просто нужно настроить метод обратного вызова, который используется для всех любимых ToolStripMenuItem. В этом методе вы сравниваете атрибуты item.Text или item.Name и выполняете различные любимые методы.

private void FavoriteToolStriptem_Click(object sender, EventArgs e) {
    ToolStripMenuItem item = sender as ToolStripMenuItem;
    MessageBox.Show("You clicked on the menu item called " + item.Name + " shown as " + item.Text);
}
person GodLesZ    schedule 17.05.2012