Как добавить вещи к menustrip программно?

Я работал некоторое время теперь, разрабатывая приложение, которые воздействуют на большие структурированные данные, сохраненные в several-gigabytes-thick-database и хорошо, Python достаточно хорош для этого. Приложение имеет клиент GUI со множеством средств управления (списки, деревья, ноутбуки, виртуальные списки и больше), и консольный сервер.

у Нас были некоторые проблемы производительности, но те были главным образом связаны больше с плохим дизайном алгоритма или ограничениями механизма базы данных (мы используем Oracle, SQL MS, MySQL и имели короткий роман с BerkeleyDB, используемым для оптимизации скорости), чем к самому Python. Как только Вы знаете, как пользоваться стандартными библиотеками (записанный в C) правильно, можно сделать код действительно быстрым.

, Поскольку другие говорят - любое вычисление интенсивный алгоритм, код, который зависит от заполнения битами, некоторая память ограничила вычисление - может быть сделан в необработанном C/C++ для сохранения ЦП/памяти (или любые другие приемы), но целое взаимодействие с пользователем, вход, обработка базы данных, обработка ошибок - все, что подает приложение, на самом деле запущенное, может быть записано в Python, и это поддержит скорость отклика и достойную общую производительность.

8
задан Sergio Tapia 22 October 2009 в 16:07
поделиться

2 ответа

. Это можно сделать, воспользовавшись отправителем объекта в обработчике событий. Большая часть этого не приходит мне в голову, поэтому я только предполагаю , что он будет компилироваться, но он должен помочь вам начать.

void AddMenuItem(string text, string action)
{
   ToolStripMenuItem item = new ToolStripMenuItem();
   item.Text = text;
   item.Click += new EventHandler(item_Click);
   item.Tag = action;

   //first option, inserts at the top
   //historyMenu.Items.Add(item);

   //second option, should insert at the end
   historyMenuItem.DropDownItems.Insert(historyMenuItem.DropDownItems.Count, item);
}

private void someHistoryMenuItem_Click(object sender, EventArgs e)
{
   ToolStripMenuItem menuItem = sender as ToolStripMenuItem;

   string args = menuItem.Tag.ToString();

   YourSpecialAction(args);
}
10
ответ дан 5 December 2019 в 11:25
поделиться

Это довольно просто. Вы можете сделать следующее:

ToolStripMenuItem menuItem

foreach (string text in collectionOfText)
{
    ToolStripMenuItem foo = new ToolStripMenuItem(text);
    foo.Click += new EventHandler(ClickEvent);
    menuItem.DropDownItems.Add(foo);
}

Впоследствии, если событие Click не сработает (у меня была проблема, когда он не обнаружил правильный пункт меню), вы можете добавить событие «DropDownItemClicked» в menuItem. и чтобы получить текст элемента, по которому вы щелкнули, выполните:

private void DropedDownItemClickedEvent(object sender, ToolStripItemClickedEventArgs e)
{
    string text = e.ClickedItem.Text;
}

Надеюсь, это поможет.

О, и не забудьте также удалить событие. Я забыл сделать это со всеми созданными мной динамическими меню и каким-то образом съел половину моей памяти. : D

5
ответ дан 5 December 2019 в 11:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: