private void richTextBox1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{ //click event
//MessageBox.Show("you got it!");
ContextMenu contextMenu = new System.Windows.Forms.ContextMenu();
MenuItem menuItem = new MenuItem("Cut");
menuItem.Click += new EventHandler(CutAction);
contextMenu.MenuItems.Add(menuItem);
menuItem = new MenuItem("Copy");
menuItem.Click += new EventHandler(CopyAction);
contextMenu.MenuItems.Add(menuItem);
menuItem = new MenuItem("Paste");
menuItem.Click += new EventHandler(PasteAction);
contextMenu.MenuItems.Add(menuItem);
richTextBox1.ContextMenu = contextMenu;
}
}
void CutAction(object sender, EventArgs e)
{
richTextBox1.Cut();
}
void CopyAction(object sender, EventArgs e)
{
Clipboard.SetText(richTextBox1.SelectedText);
}
void PasteAction(object sender, EventArgs e)
{
if (Clipboard.ContainsText())
{
richTextBox1.Text
+= Clipboard.GetText(TextDataFormat.Text).ToString();
}
}
richTextBox1
にテキストをマークし、マークされたテキストを右マウスボタンでクリックすると、2回目にメニューが表示されます。richtextboxにコンテキストメニューを追加するときに、マウスの右ボタンを2回クリックしてメニューを表示する必要があるのはなぜですか?
プログラムを実行しているときにテキストをマークしていない場合は、マウスの右ボタンをクリックしてスクロールし、最後のテキストをrichTextBox1
の下に選択します。
もう1つの質問は、フォームロードイベントにcontextmenu
作成コードを挿入する方法です。それで、プログラムを実行するときにはcontextmenu
が1回だけ作成され、マウスを右クリックするたびに作成されるのではありませんか?