今回は WindowsForm の
RichTextBox に
右クリックメニューを
付与する方法の紹介です。
この手順を踏めば
右クリックメニューを
簡単に実装出来ます。
手順 1 フィールドを足す
まずはフィールドに
次の記述を足します。
作業 1
private ContextMenuStrip contextMenuStripOnPanel = new ContextMenuStrip();
そのままコピペして
貼り付けて頂いて OK です。
手順 2 コンストラクタに足す
次にコンストラクタの最後に
次の記述を足します。
作業 2
contextMenuStripOnPanel.Opening += new CancelEventHandler(cms_Opening);
richTextBox1.ContextMenuStrip = contextMenuStripOnPanel;
そのままコピペして
貼り付けて頂いて OK です。
コンストラクタという表現があいまいで
何を指しているか分からない場合は
フォームの初期化処理の最後に記述して下さい。
手順 3 メソッドを足す
最後にメソッドを足します。
作業 3
void cms_Opening(object sender, CancelEventArgs e)
{
ContextMenuStrip menuOnPanel = (ContextMenuStrip)sender;
Point mp = MousePosition;
menuOnPanel.SourceControl.PointToClient(mp);
contextMenuStripOnPanel.Items.Clear();
contextMenuStripOnPanel.Items.Add("コピー");
contextMenuStripOnPanel.Items[0].Click += PanelMenuItems0_Click;
contextMenuStripOnPanel.Items.Add("貼り付け");
contextMenuStripOnPanel.Items[1].Click += PanelMenuItems1_Click;
e.Cancel = false;
}
private void PanelMenuItems0_Click(object sender, EventArgs e)
{
if (0 < richTextBox1.SelectionLength)
{
Clipboard.SetText(richTextBox1.Text.Substring(richTextBox1.SelectionStart, richTextBox1.SelectionLength));
}
richTextBox1.Focus();
}
private void PanelMenuItems1_Click(object sender, EventArgs e)
{
int selectoin = richTextBox1.SelectionStart;
string insertString = Clipboard.GetText();
richTextBox1.Text = richTextBox1.Text.Substring(0, selectoin) + insertString + richTextBox1.Text.Substring(richTextBox1.SelectionStart + richTextBox1.SelectionLength);
richTextBox1.SelectionStart = selectoin + insertString.Length;
richTextBox1.SelectionLength = 0;
richTextBox1.Focus();
}
そのままコピペして
貼り付けて頂いて OK です。
以上で作業は完了です。
以上 RichTextBox に
最低限の右クリックメニューを足す
手順を紹介しました。
このコードを解析すれば
右クリックメニューを増やすのも
簡単にできると思います。
この記事が皆さんの開発の助けになれますように。
閲覧ありがとうございました。
参考サイト
この記事は下記のサイトを参考にしました。
https://qiita.com/guijiu/items/ef6a29fcfd9741241e43
参考にしたサイト作成者様に感謝します。