1

セル選択のみに制限した VB.NET アプリに DataGridView があります。コントロールには 2 つの列があり、1 つ目は編集不可、2 つ目は編集可能です。いくつかの追加機能を提供する 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 に答える