我注意到WinForm文本框的右键菜单有些奇怪。文本框控件有一个默认的右键菜单,包括剪切、复制、粘贴等选项。我试图用自己的菜单替换它。我创建了一个简单的测试应用程序,在表单上添加了一个文本框,并添加了以下代码:
Form1()
{
InitailizeComponent();
ContextMenu menu = new ContextMenu();
menu.MenuItems.Add("Hello World", HelloWorld_Clicked);
textBox1.ContextMenu = menu;
}
private void HelloWorld_Clicked(object sender, EventArgs e)
{
MessageBox.Show("Hello World!");
}
当我运行这个程序时,我可以通过右键单击文本框并释放鼠标按钮而不移动鼠标来打开上下文菜单。但是,如果我在文本框上按住右键,将其移动到文本框外部,最后释放鼠标按钮,则会获得默认的文本框上下文菜单。是否有可能停止这样做?
更新:如果有所不同,该系统正在运行Windows XP Pro SP3和.Net 3.5。
更新2:我在Windows 11上尝试了.Net Core 6中的以下代码,并遇到了相同的问题。
namespace WinFormsApp1;
public partial class Form1 : Form
{
public Form1()
{
this.InitializeComponent();
ContextMenuStrip menu = new ContextMenuStrip();
menu.Items.Add("Hello World", null, HelloWorld_Clicked);
textBox1.ContextMenuStrip = menu;
}
private void HelloWorld_Clicked(object? sender, EventArgs e)
{
MessageBox.Show("Hello World!");
}
}
考虑到微软现在开始使用GitHub,我在这里提出了一个问题。