首页 文章

在选项卡中将上下文菜单添加到richtextbox

提问于
浏览
-2

这是用于创建带有富文本框的新选项卡并选择当前richtextbox的代码 .

private RichTextBox GetRichTextBox()
    {
        RichTextBox rtb = null;
        TabPage tp = tabControl1.SelectedTab;

        if (tp != null)
        {
            rtb = tp.Controls[0] as RichTextBox;
        }

        return rtb;
    }

    private void newToolStripMenuItem_Click(object sender, EventArgs e)
    {
        TabPage tp = new TabPage("New Document");
        RichTextBox rtb = new RichTextBox();
        rtb.Dock = DockStyle.Fill;

        tp.Controls.Add(rtb);
        tabControl1.TabPages.Add(tp);
    }

我需要能够向richtextbox添加一个上下文菜单,包括我可能需要的剪切,复制,粘贴和其他控件 . 我不知道该怎么做 .

1 回答

  • 0

    通常,您可以向表单添加ContextMenuStrip,使用设计器定义菜单项,然后转到RichTextBox属性并将ContextMenuStrip实例分配给RichTextBox的ContextMenuStrip属性 .

    但是,您可以使用代码动态创建相同的接口:

    TabPage tp = new TabPage("New Document");
    RichTextBox rtb = new RichTextBox();
    rtb.Dock = DockStyle.Fill;
    ContextMenuStrip ctx = new ContextMenuStrip();
    ctx.Items.Add(new ToolStripMenuItem("Cut",null, cutClick));
    ctx.Items.Add(new ToolStripMenuItem("Copy", null, copyClick))
    ctx.Items.Add(new ToolStripMenuItem("Paste", null, pasteClick));
    // Add other menu items as you need
    
    rtb.ContextMenuStrip = ctx;
    .....
    
    
    
    void cutClick(object sender, EventArgs e)
    {
        RichTextBox rtb = sender as RichTextBox;
        if(rtb.SelectedText.Length > 0)
            rtb.Cut();
    }
    void copyClick(object sender, EventArgs e)
    {
        RichTextBox rtb = sender as RichTextBox;
        if(rtb.SelectedText.Length > 0)
           rtb.Copy();
    }
    void pasteClick(object sender, EventArgs e)
    {
        RichTextBox rtb = sender as RichTextBox;
        DataFormats.Format textFormat = DataFormats.GetFormat(DataFormats.Text);
        if(rtb.CanPaste(textFormat))
            rtb.Paste();
    }
    

相关问题