将上下文菜单添加到选项卡中的 richtextbox
Adding context menu to richtextbox in a tab
这是创建一个带有富文本框的新标签并选择当前富文本框的代码。
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 添加上下文菜单,以及我可能需要的剪切、复制、粘贴和其他控件。我不知道该怎么做。
通常您可以将 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();
}
这是创建一个带有富文本框的新标签并选择当前富文本框的代码。
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 添加上下文菜单,以及我可能需要的剪切、复制、粘贴和其他控件。我不知道该怎么做。
通常您可以将 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();
}