5つの列とアイテムとサブアイテムを持つコンテキストメニューストリップを備えたdatagridviewがあります。最後の列を右クリックすると、コンテキストメニューが開きます。
このコードを試しましたが、サブアイテムのないオープンコンテキストメニューストリップです。
dataGrid.Columns[dataGrid.Columns.Count].HeaderCell.ContextMenuStrip = contextMenuStrip1;
5つの列とアイテムとサブアイテムを持つコンテキストメニューストリップを備えたdatagridviewがあります。最後の列を右クリックすると、コンテキストメニューが開きます。
このコードを試しましたが、サブアイテムのないオープンコンテキストメニューストリップです。
dataGrid.Columns[dataGrid.Columns.Count].HeaderCell.ContextMenuStrip = contextMenuStrip1;
ユーザーが DataGridView の最後の列のヘッダーを右クリックした場合、ContextMenuStrip を開きたいようです。私は DataGridViewMouseDown
イベントを使用し、そのイベントでこれらの条件をチェックし、条件が満たされている場合はShow
ContextMenuStrip のメソッドを呼び出します。
このような:
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);
}
}
}
最後の列のヘッダーにコンテキスト メニューを追加したいということであれば、その方向はおそらく正しいでしょう。しかし、最後の列のインデックスは ですdataGrid.Columns.Count - 1
。したがって、このコードは私にとってはうまく機能します:
dataGrid.Columns[dataGrid.Columns.Count - 1].HeaderCell.ContextMenuStrip = contextMenuStrip1; ?
サブアイテムが配置されています。