在RichTextBox中选择Word并右键单击,然后在ContextMenu C#中显示

时间:2013-03-16 04:18:33

标签: c# winforms contextmenu spell-checking

程序员,硕士。

请帮助我......让我通过你的榜样来学习。

描述: 当选择并右键单击一个单词时,该单词将显示在弹出窗口中。 例如, INPUT:“巴塞罗那是我最喜欢的足球俱乐部”。

在我选择单词“ football ”后,右键单击该单词并在弹出菜单“This is football ”中显示该单词。

当我在弹出菜单中单击这些单词时,它将替换INPUT中的单词 弹出菜单中的单词,就像这个例子一样。

输出:巴塞罗那是我最喜欢的这是足球俱乐部。“

请帮助我。

我真的对ContextMenu一无所知..

以下是代码:

ContextMenu contextMenu = new ContextMenu();
private EventHandler menuHandler;

public Form1()
{
    InitializeComponent();
    menuHandler = new System.EventHandler(this.Menu_Click);// what's menu_click?
}

private void Menu_Click(object sender, EventArgs e)
{
    richTextBox1.SelectionFont = new Font("Times New Roman", 12);
    richTextBox1.SelectionColor = Color.Black;

    richTextBox1.SelectedText = ((MenuItem)sender).Text;
}

private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
{
   try
   {
      if (e.Button == MouseButtons.Right)
      {
         Point point = new Point(e.X, e.Y);
         int index = richTextBox1.GetCharIndexFromPosition(point);
         textBox1.Text = Convert.ToString(index);

         int length = 1;

         if (!Char.IsWhiteSpace(richTextBox1.Text[index]))
         {
             while (index > 0 && !Char.IsWhiteSpace(richTextBox1.Text[index - 1]))
             { index--; length++; }

              while (index + length < richTextBox1.Text.Length &&
                  !Char.IsWhiteSpace(richTextBox1.Text[index + length]) &&
                  (!Char.IsPunctuation(richTextBox1.Text[index + length]) ||
                  richTextBox1.Text[index + length] == Char.Parse("'"))
              ) length++;

              richTextBox1.SelectionStart = index;
              richTextBox1.SelectionLength = length;
              contextMenu.MenuItems.Clear(); // error here
              contextMenu.MenuItems.Add("This is "+richTextBox1.SelectedText, menuHandler); //error here
              //What's next Sir?
             }
         }
     }
  }

//下一个......,我真的不知道。

它不起作用。请帮助:) :) :))

2 个答案:

答案 0 :(得分:0)

你只是用下面的东西来显示菜单

contextMenu1.Show(richTextBox1, point);

答案 1 :(得分:0)

显示contextMenu add

richTextBox1.ContextMenu = contextMenu ; 

初始化或表格1()