0

我想创建一个继承自 PictureBox 的自定义 PictureBox 类。

public partial class Custom : PictureBox
{
    public Custom()
    {
        this.Size = new System.Drawing.Size(20, 20);
        this.Image = WindowsFormsApplication1.Properties.Resources.icon;
    }

    private void Custom_MouseClick(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Right)
        {

        }
    }       
}

我还创建了 contextMenuStrip,但无法将其附加到我的 MouseClick 事件中。如果我尝试使用

contextMenuStrip1.Show(Cursor.Position);

我得到 contextMenuStrip1 在当前上下文中不存在的错误。如何处理这个事件?

4

1 回答 1

0

我处理这个的方式很简单。首先,我必须创建委托来处理 MouseClick 事件。

this.MouseClick +=Custom_MouseClick;

然后创建菜单对象并填写所有需要的信息

    private void Custom_MouseClick(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Right)
        {
            ContextMenuStrip menu = new ContextMenuStrip();

            ToolStripMenuItem addItem = new ToolStripMenuItem();
            addItem.Name = "AddMenuItem";
            addItem.Text = "Add";
            menu.Items.Add(addItem);

            ToolStripMenuItem editItem = new ToolStripMenuItem();
            editItem.Name = "EditMenuItem";
            editItem.Text = "Edit";
            menu.Items.Add(editItem);

            menu.Show(Cursor.Position);
            menu.ItemClicked += menu_ItemClicked;
        }
    }

然后,为了使我的菜单工作,我必须创建另一个委托来处理 ItemClicked 菜单事件。

    void menu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
    {
        [code]
    } 
于 2013-10-14T13:30:44.313 回答