Добавление элементов в 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);
}