如何添加项到/修改表单的默认上下文菜单
本文关键字:表单 修改 默认 菜单 上下文 何添加 添加 | 更新日期: 2023-09-27 18:12:08
解决方案:如何自定义Windows窗体的系统菜单?不管怎样,谢谢你的帮助:)
我想添加一个新的项目到一个表单的默认上下文菜单,它出现时右键单击顶部栏(其中最小化框和最大化框)。
我更喜欢用编程方式(而不是在设计器中)
我试过了
public Form1()
{
InitializeComponent();
this.ContextMenu.Add(new MenuItem("Test")); //->NullReferenceException
this.ContextMenu = new ContextMenu(/*..*/); //-> Not what I want
}
这会导致NullReferenceException。如果我设置this.ContextMenu
,它只影响当你右键单击进入表单时出现的上下文菜单,在这种情况下我不需要。
我希望有人能帮助我^^我知道这需要有可能,因为我已经在很多程序中看到它了
微软的一个例子:
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!");
}
}
可能是这些帮助
http://www.c-sharpcorner.com/UploadFile/deepak.sharma00/how-to-customize-default-contextmenu-of-a-textbox-control-in/是否可以获取和修改文本框的标准系统上下文菜单?