1

我在 VB.NET 应用程序中有一个 DataGridView,我仅限于单元格选择。该控件有两列,第一列不可编辑,第二列可编辑。我有一个 ContextMenuStrip,它提供了一些额外的功能,并且当可编辑单元格收到右键单击且未处于编辑模式时,我能够使其出现。基于Microsoft 论坛中的示例,我现在可以在可编辑单元格在编辑模式下收到右键单击时显示上下文菜单。该代码如下:

Private Sub DataGridView1_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
    If TypeOf e.Control Is TextBox Then
        With DirectCast(e.Control, TextBox)
            .ContextMenuStrip = ContextMenuStrip1
        End With
    End If
End Sub

但是,这会完全覆盖编辑控件的系统上下文菜单。如何将我的上下文菜单条 ( ContextMenuStrip1) 与系统上下文菜单合并?

有关更多信息,我使用的是 VS2008,但目标是 .NET 2.0 平台。

4

1 回答 1

0

为了短期简单起见,我所做的是创建一个新的上下文菜单,其中包含与现有系统提供的上下文菜单相似的菜单项以及我额外需要的菜单项。Textbox 控件包含每个菜单项最初提供的功能,因此我只需在每个菜单项的事件处理程序中进行必要的调用。

这种方法的问题在于,如果 Microsoft 将来更改系统提供的菜单,我将不得不添加更多菜单项、更多事件处理程序和更多禁用/启用代码。从长远来看,最好找到上下文菜单的句柄并合并到我的自定义菜单项中。

于 2008-10-30T15:42:19.140 回答