Предполагается, что у вас есть проблема с выбором опции, выбранной из контекстного меню.
Как я уже упоминал в комментарии, я публикую здесь пример рабочего кода для вашего лучшего понимания.
Сначала вы должны сделать перечисление, представляющее все возможные пункты меню вашего контекстного меню. Мы будем использовать его для уникальной пометки пунктов меню.
(Вы можете избежать этого, просто пометив string
, но с enum легко и чисто работать)
Предположим, у вас есть следующие варианты.
public enum contextMenuOptions
{
guestOption1,
guestOption2,
guestOption3,
peopleOption1,
peopleOption2,
peopleOption3,
statOption1,
statOption2,
statOption3
}
при инициализации «предопределенных» опций меню вы можете пометить их этим перечислением, как показано ниже. А также, вы можете установить созданный ContextMenuStrip
для конкретного TextBox
ContextMenuStrip popUpGuest = new ContextMenuStrip();
ToolStripTextBox guestMenuitem1 = new ToolStripTextBox();
guestMenuitem1.Text = "Guest Option1";
guestMenuitem1.Tag = contextMenuOptions.guestOption1; //tagging with enum
guestMenuitem1.Click += Menuitem_Click;
popUpGuest.Items.Add(guestMenuitem1);
txtGuest.ContextMenuStrip = popUpGuest;
таким же образом для других опций и других контекстных меню
ContextMenuStrip popUpPeople = new ContextMenuStrip();
ToolStripTextBox peopleMenuitem1 = new ToolStripTextBox();
peopleMenuitem1.Text = "people option1";
peopleMenuitem1.Tag = contextMenuOptions.peopleOption1;
peopleMenuitem1.Click += Menuitem_Click;
popUpPeople.Items.Add(peopleMenuitem1);
txtPeople.ContextMenuStrip = popUpPeople;
и
ContextMenuStrip popUpStatement = new ContextMenuStrip();
ToolStripTextBox stateMenuitem1 = new ToolStripTextBox();
stateMenuitem1.Text = "stat Option1";
stateMenuitem1.Tag = contextMenuOptions.statOption1;
stateMenuitem1.Click += Menuitem_Click;
popUpStatement.Items.Add(stateMenuitem1);
txtStatement.ContextMenuStrip = popUpStatement;
обратите внимание, что обработчик щелчков для всех параметров является общим Menuitem_Click
, поэтому независимо от того, какой параметр выбран из какого контекстного меню, этот обработчик будет вызываться. И здесь мы поставим общее решение.
void Menuitem_Click(object sender, EventArgs e)
{
ToolStripTextBox senderMenuItem = (ToolStripTextBox)sender;
contextMenuOptions tag = (contextMenuOptions)senderMenuItem.Tag;
TextBox textBoxToBeUpdated = null;
string optionSelected = "";
switch (tag)
{
case contextMenuOptions.guestOption1:
optionSelected = "guestOption1";
textBoxToBeUpdated = txtGuest;
break;
case contextMenuOptions.guestOption2:
optionSelected = "guestOption2";
textBoxToBeUpdated = txtGuest;
break;
case contextMenuOptions.guestOption3:
optionSelected = "guestOption3";
textBoxToBeUpdated = txtGuest;
break;
case contextMenuOptions.peopleOption1:
optionSelected = "PeopleOption1";
textBoxToBeUpdated = txtPeople;
break;
case contextMenuOptions.statOption1:
optionSelected = "StatmentOption1";
textBoxToBeUpdated = txtStatement;
break;
default:
break;
}
textBoxToBeUpdated.Text = optionSelected;
}