您的位置:首页 > 其它

richTextBox的右键菜单“复制、粘贴、剪切、全选、删除、撤销、重做”

2012-05-02 17:21 603 查看
以前用richTextBox没发现它不像textbox那样有右键菜单,所以在点击右键时什么也没有,想复制粘贴都做不到,所以今天我抽空做了一个richTextBox的右键菜单。内容如下:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
richTextBox1.Text = "清音俗世留 纷争几时休\n" + "若能破名利 太虚任遨游";
}

private void copy_Click(object sender, EventArgs e)//复制
{
richTextBox1.Copy();
}

private void undo_Click(object sender, EventArgs e)//取消
{
if (richTextBox1.CanUndo)
{
richTextBox1.Undo();
}
}

private void selectall_Click(object sender, EventArgs e)//全选
{
richTextBox1.SelectAll();
}

private void delete_Click(object sender, EventArgs e)//清除
{
richTextBox1.Clear();
}

private void paste_Click(object sender, EventArgs e)//粘贴
{
if ( (richTextBox1.SelectionLength>0)&&(MessageBox.Show("是否覆盖选中的文本?", "覆盖", MessageBoxButtons.YesNo) == DialogResult.No))
richTextBox1.SelectionStart = richTextBox1.SelectionStart + richTextBox1.SelectionLength;
richTextBox1.Paste();
}

private void clip_Click(object sender, EventArgs e)//剪切
{
richTextBox1.Cut();
}

private void redo_Click(object sender, EventArgs e)//重做
{
if (richTextBox1.CanRedo)
richTextBox1.Redo();
}

private void richTextBox1_MouseUp(object sender, MouseEventArgs e)//控制右键菜单的显示
{
if (e.Button == MouseButtons.Right)
{
if (richTextBox1.CanRedo)//redo
redo.Enabled = true;
else
redo.Enabled = false;
if (richTextBox1.CanUndo)//undo
undo.Enabled = true;
else
undo.Enabled = false;
if (richTextBox1.SelectionLength > 0)
{
copy.Enabled = true;
clip.Enabled = true;
}
else
{
copy.Enabled = false;
clip.Enabled = false;
}
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
paste.Enabled = true;
else
paste.Enabled = false;
contextMenuStrip1.Show(richTextBox1, new Point(e.X, e.Y));
}
}
}





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: