C# と WinForms は初めてです。右クリック (コンテキスト メニュー) イベントを持つオブジェクトがいくつかあります。ただし、コンテキストに応じて (たとえば、ユーザーがウィザード画面にいるかメイン画面にいるかによって)、右クリックの動作を変更したいと考えています。少しグーグルで調べたところ、+=
and-=
演算子を使用できることがわかりましたが、それでもやりたいことを達成できませんでした。たとえば、以下のコードを考えると、
何か案は ?
編集:OnClickCard
場所によって異なる動作が必要です。
サンプルコード:
public override ContextMenuStrip GetContextMenuStrip(GoView view)
{
if (Selectable)
{
ContextMenuStrip contextMenu = new ContextMenuStrip();
if (!Empty)
{
// this is just for example so not showing the implementation
contextMenu.Items.Add(new ToolStripMenuItem(
"Delete",
null,
new EventHandler(OnClickDelete)));
}
// Empty
else
{
ToolStripMenuItem addCard = new ToolStripMenuItem("Add");
foreach (..some data..)
{
ToolStripMenuItem card = new ToolStripMenuItem(
data,
null,
new EventHandler(OnClickCard));
addCard.DropDownItems.Add(card);
}
}
}
else
{
return null;
}
}
private void OnClickCard(object sender, EventArgs e)
{
ToolStripMenuItem cardItem = (ToolStripMenuItem)sender;
if (cardItem.Text.Contains("ABC"))
{
Common.Forms.FormMMUSettings f = new FormMMUSettings(cardItem.Text,ParentMagazine.NextSite);
f.Show();
}
SetCard(new MagazineCard(2, cardItem.Text));
}