我想更改默认的文本框上下文菜单,所以我创建了自己的菜单并像那样分配它们
texbox.ContextMenu = myContextMenu
但是我不知道如何恢复默认的文本框菜单(在运行时)。仅当我用鼠标右键单击文本框(同时按住控制按钮)时,我才需要显示 myContextMenu。在其他情况下,我需要显示默认的文本框上下文菜单。 可能吗??
最佳答案
这里是微软给出的例子:
http://msdn.microsoft.com/en-us/library/ms750420.aspx
作为记录,这里是使用 WinForms 执行此操作的方法:
public partial class TextBoxContextMenuDemo : Form
{
ContextMenu mnuContextDefault;
ContextMenu mnuContextAlt;
MenuItem mnuItmAltMenuTest;
public TextBoxContextMenuDemo()
{
InitializeComponent();
InitializeAltContextMenu();
}
private void InitializeAltContextMenu()
{
mnuContextDefault = new ContextMenu();
mnuContextDefault = this.TextBox1.ContextMenu;
mnuItmAltMenuTest = new MenuItem();
mnuItmAltMenuTest.Index = -1;
mnuItmAltMenuTest.Text = "Test Menu Item";
mnuItmAltMenuTest.Click += new System.EventHandler(this.mnuItmAltMenuTest_Click);
mnuContextAlt = new ContextMenu();
mnuContextAlt.MenuItems.Add(mnuItmAltMenuTest);
}
private void TextBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if ((Control.ModifierKeys == Keys.Control))
{
this.TextBox1.ContextMenu = mnuContextAlt;
TextBox1.ContextMenu.Show(TextBox1, new Point(e.X, e.Y));
}
else
{
this.TextBox1.ContextMenu = mnuContextDefault;
}
}
}
private void mnuItmAltMenuTest_Click(object sender, System.EventArgs e)
{
MessageBox.Show("You clicked the alternate test menu item!");
}
}
喂!
关于c# - 如何更改(并稍后恢复)文本框中的默认上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3471439/