中央競馬の予想や購入したもののメモなどを書いて行こうかと。まあ、個人的なメモ的なブログです。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
ラベルコントロールにコンテキストメニューを表示して入力する方法をなかなか理解出来なかったのですが、やっと実装出来ました。コンテキストメニューを表示するのはさほど難しい話では無かったです。
ContextMenuStrip contextMenuStrip = new ContextMenuStrip();
contextMenuStrip.Items.Add("◎", null, new EventHandler(lblMark_Selected));
contextMenuStrip.Items.Add("○", null, new EventHandler(lblMark_Selected));
contextMenuStrip.Items.Add("▲", null, new EventHandler(lblMark_Selected));
contextMenuStrip.Items.Add("△", null, new EventHandler(lblMark_Selected));
contextMenuStrip.Items.Add("×", null, new EventHandler(lblMark_Selected));
contextMenuStrip.Items.Add("注", null, new EventHandler(lblMark_Selected));
contextMenuStrip.Items.Add(" ", null, new EventHandler(lblMark_Selected));
として、これを表示したいラベルコントロールのContextMenuStripにセットするだけ。
lblMark.ContextMenuStrip = contextMenuStrip;
ただ、今回の場合はこのラベルコントロールを配列にしていてイベントハンドラーでどの様に処理するのかグーグル先生に確認しても明確な回答が得られなかった。まあ、そこで自力で解決するしかないのでデバッグ機能を利用しながら使えそうなプロパティを探り、ようやく実装に至った訳です。
private void lblMark_Selected(object sender, EventArgs e)
{
ToolStripMenuItem toolStripMenuItem = sender as ToolStripMenuItem;
ContextMenuStrip contextMenuStrip = (ContextMenuStrip)toolStripMenuItem.Owner;
Label label = (Label)contextMenuStrip.SourceControl;
label.Text = sender.ToString();
}