C# 在数据网格视图单元格中单击鼠标右键时对话框消失

C# 在数据网格视图单元格中单击鼠标右键时对话框消失,c#,winforms,contextmenu,C#,Winforms,Contextmenu,我已经使用Windows窗体创建了一个网格视图。我还提供了一个上下文条菜单,其中包含右键单击时的复制选项 但是,在其中一个单元格中单击鼠标右键时,对话框本身会消失,单击鼠标左键时,对话框会再次出现。我错过什么了吗?但是,如果我使对话框的最顶端属性为真,问题就解决了。但是我不想使对话框始终位于顶部 private void mnuCopy_Click(object sender, EventArgs e) { if (row >= 0 && col >= 0)

我已经使用Windows窗体创建了一个网格视图。我还提供了一个上下文条菜单,其中包含右键单击时的复制选项

但是,在其中一个单元格中单击鼠标右键时,对话框本身会消失,单击鼠标左键时,对话框会再次出现。我错过什么了吗?但是,如果我使对话框的最顶端属性为真,问题就解决了。但是我不想使对话框始终位于顶部

private void mnuCopy_Click(object sender, EventArgs e)
{
    if (row >= 0 && col >= 0)
    {
        Clipboard.SetData(DataFormats.Text, ErrorDetailsDataGridView.Rows[row].Cells[col].Value.ToString());
    }
}

private void ErrorDetailsDataGridView_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{            
    if (e.Button == MouseButtons.Right && e.ColumnIndex != -1 && e.RowIndex != -1)
    {
        row = e.RowIndex;
        col = e.ColumnIndex;
        ContextMenuStrip mnu = new ContextMenuStrip();
        ToolStripMenuItem mnuCopy = new ToolStripMenuItem("Copy");
        mnuCopy.Click += new EventHandler(this.mnuCopy_Click);
        mnu.Items.AddRange(new ToolStripItem[] { mnuCopy });
        if (ErrorDetailsDataGridView.CurrentCell != ErrorDetailsDataGridView.Rows[row].Cells[col])
        {
            ErrorDetailsDataGridView.CurrentCell = ErrorDetailsDataGridView.Rows[row].Cells[col];
        }
        ErrorDetailsDataGridView.Rows[row].Cells[col].ContextMenuStrip = mnu;
    }
} 

对话框是什么?您的意思是该窗体是另一窗体的子窗体,右键单击时会消失?是的,它是另一窗体的子窗体尝试在
Show()时设置“对话框”的
Owner
,方法是传入包含DataGridView:
frmDialog.Show(此)的窗体