想做一个类似于记事本的程序.能够实现在richTextBox中点击右键,弹出和mainMenu中"编辑"相同的选项.因为这些选项的功能一样,所以我就用了MenuItem.CloneMenu方法.但点击弹出的右键菜单上的选项时却没有反应.
一些相关代码如下:
public FormMain()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
#region Clone主菜单中的方法到context(右键)菜单中.这样,就不必重新编写代码了

menuItemCCut = menuItemCut.CloneMenu();
menuItemCCopy = menuItemCopy.CloneMenu();
menuItemCPaste = menuItemPaste.CloneMenu();
menuItemCDel = menuItemDel.CloneMenu();
menuItemCSelAll = menuItemSelAll.CloneMenu ();
menuItemCUndo = menuItemUndo.CloneMenu();

#endregion }
private void contextMenu1_Popup(object sender, System.EventArgs e)
{
//根据剪贴板中是否有格式为test的数据,决定"粘贴"是否可用
if( Clipboard.GetDataObject().GetDataPresent(DataFormats.Text) )
menuItemCPaste.Enabled = true;
else
menuItemCPaste.Enabled = false; //根据文本框中是否选择了文本,决定"剪切","复制","删除"是否可用
if( richTextBox1.SelectionLength > 0 )
{
menuItemCCopy.Enabled = true;
menuItemCCut.Enabled = true;
menuItemCDel.Enabled = true;
}
else
{
menuItemCCopy.Enabled = false;
menuItemCCut.Enabled = false;
menuItemCDel.Enabled = false;
} //根据文本框是否可以执行"撤销"
if( richTextBox1.CanUndo == true )
menuItemCUndo.Enabled = true;
else
menuItemCUndo.Enabled = false;
}