Добавление элементов в ToolStrip в RunTime

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

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

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

Выберите "Добавить в избранное" из ContextMenu

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

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

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

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();
    }

Это довольно просто. Вам просто нужно настроить метод обратного вызова, который используется для всех любимых ToolStripMenuItem"S. В этом методе вы сравниваете 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);
}
Другие вопросы по тегам