如何为所选文本设置上下文菜单? &安培;

时间:2009-11-14 01:04:31

标签: c# .net winforms

2个问题:

  1. 在谷歌浏览器中,如果您选择一个单词(例如problem),然后右键单击此选定文本,则上下文菜单会显示两个项目1.复制2.搜索谷歌搜索problem 3.检查元素。上下文菜单与整个窗口的上下文菜单不同。如何为选定的文本提供此单独的上下文菜单。

    我要完成的确切任务是:我有一个文本框(在winforms中)。现在,当用户rt点击时,上下文菜单只显示paste。如果文本框已填充有一些文本,用户选择一些文本,然后右键单击所选文本,它应显示上下文菜单 项目:复制,剪切,粘贴,全选。怎么样?。

  2. 对于复制文本,用户有3个选项:

    1. 复制(在上下文菜单中)
    2. 修改菜单
    3. 控制+ C
  3. 所有这些都做同样的事情,将选定的数据复制到剪贴板。我想覆盖使用这3种方法复制所选数据的功能,将所需数据复制到剪贴板。怎么样?

1 个答案:

答案 0 :(得分:1)

您可以将自定义ContextMenuStrip分配给TextBox的ContextMenuStrip属性。因此,我将实例化我自己的,用复制/粘贴项目和您需要的其他项目填充它。然后,您可以处理ContextMenuStrip的Opening事件,检查TextBox中是否有选定的文本,并在显示之前修改菜单项(即更改“搜索谷歌”项目的可见属性)。

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
    var item = searchGoogleMenuItem;
    if (item.Visible = !string.IsNullOrEmpty(textBox1.SelectedText))
        item.Text = string.Format("Search Google '{0}'", textBox1.SelectedText);
}