1

5つの列とアイテムとサブアイテムを持つコンテキストメニューストリップを備えたdatagridviewがあります。最後の列を右クリックすると、コンテキストメニューが開きます。

このコードを試しましたが、サブアイテムのないオープンコンテキストメニューストリップです。

dataGrid.Columns[dataGrid.Columns.Count].HeaderCell.ContextMenuStrip = contextMenuStrip1;
4

2 に答える 2

5

ユーザーが DataGridView の最後の列のヘッダーを右クリックした場合、ContextMenuStrip を開きたいようです。私は DataGridViewMouseDownイベントを使用し、そのイベントでこれらの条件をチェックし、条件が満たされている場合はShowContextMenuStrip のメソッドを呼び出します。

このような:

private void dataGridView1_MouseDown(object sender, MouseEventArgs e) {
    if (e.Button == MouseButtons.Right) {
        var ht = dataGridView1.HitTest(e.X, e.Y);
        // See if the user right-clicked over the header of the last column.
        if ((    ht.ColumnIndex == dataGridView1.Columns.Count - 1) 
             && (ht.Type == DataGridViewHitTestType.ColumnHeader)) {
            // This positions the menu at the mouse's location.
            contextMenuStrip1.Show(MousePosition);
        }
    }
}
于 2011-07-22T03:41:01.973 に答える
0

最後の列のヘッダーにコンテキスト メニューを追加したいということであれば、その方向はおそらく正しいでしょう。しかし、最後の列のインデックスは ですdataGrid.Columns.Count - 1。したがって、このコードは私にとってはうまく機能します:

dataGrid.Columns[dataGrid.Columns.Count - 1].HeaderCell.ContextMenuStrip = contextMenuStrip1; ?

サブアイテムが配置されています。

于 2011-07-22T00:33:55.117 に答える