gpt4 book ai didi

c# - 鼠标右键单击 contextMenuStrip 第一次不显示

转载 作者:太空宇宙 更新时间:2023-11-03 20:09:47 24 4
gpt4 key购买 nike

我得到了这部分代码,我在其中打开 contextMenuStrip 以响应鼠标右键单击(在 dataGridView 表上)。

问题是,我第一次右击 - 菜单没有弹出。第二次弹出时,一切正常..

    private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
DataGridView.HitTestInfo info = dataGridView1.HitTest(e.X, e.Y); //get info
int currentMouseOverRow = dataGridView1.HitTest(e.X, e.Y).RowIndex;

if (e.Button == MouseButtons.Right) //MouseButton right: Open context menu strip.
{
dataGridView1.Rows[currentMouseOverRow].Selected = true; //Select the row

ContextMenuStrip Menu = new ContextMenuStrip();
ToolStripMenuItem MenuOpenPO = new ToolStripMenuItem("Delete it");
MenuOpenPO.Click += new EventHandler(MenuOpenPO_Click);
Menu.Items.AddRange(new ToolStripItem[] { MenuOpenPO });
dataGridView1.ContextMenuStrip = Menu; //Assign to dataGridView1
}
}

有什么帮助吗? :) 我使用 visual studio 2012。

最佳答案

问题:您在 RightClick 事件后将 ContextMenu 添加到 DataGridView。所以 ContextMenu 将在第一次 RightClick 之后添加到您的 DataGridView 中,因此用户可以从更远的地方看到附加的 ContextMenu RightClick 事件。

解决方案:您需要在右键单击 DataGridView 之前添加 ContextMenu,这样它会在每次 RightClick 时出现 事件。

注意:如果ContextMenu被分配给任何控件,它会默认显示在rightclick上,意味着你不需要添加它明确针对控件上的每个 RightClick 事件。

试试这个:在 Form Load 事件中

   private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
ContextMenuStrip Menu = new ContextMenuStrip();
ToolStripMenuItem MenuOpenPO = new ToolStripMenuItem("Delete it");
MenuOpenPO.Click += new EventHandler(MenuOpenPO_Click);
Menu.Items.AddRange(new ToolStripItem[] { MenuOpenPO });
dataGridView1.ContextMenuStrip = Menu; //Assign to dataGridView1
}

关于c# - 鼠标右键单击 contextMenuStrip 第一次不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20774671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com