グリッドのコンテキスト メニュー
グリッドのコンテキスト メニューを設定するには、GcMultiRow.ContextMenuプロパティまたはGcMultiRow.ContextMenuStripプロパティに表示するメニューを割り当てます。両方のプロパティにメニューが割り当てられた場合はGcMultiRow.ContextMenuプロパティが優先されます。
システムの既定の設定では、マウスの右クリックまたはアプリケーション キーでコンテキスト メニューを表示します。アプリケーション キーは[Shift]+[F10]キーで代替できます。
Dim menu As ContextMenuStrip = New ContextMenuStrip() menu.Items.AddRange(New ToolStripItem() { _ New ToolStripMenuItem("テスト1"), New ToolStripMenuItem("テスト2") }) GcMultiRow1.ContextMenuStrip = menu
ContextMenuStrip menu = new ContextMenuStrip(); menu.Items.AddRange(new ToolStripItem[] { new ToolStripMenuItem("テスト1"), new ToolStripMenuItem("テスト2") }); gcMultiRow1.ContextMenuStrip = menu;
マウスカーソルが指し示すオブジェクトの種類の取得
GcMultiRow.HitTestメソッドを使用すると、マウスカーソルが指し示すオブジェクトの種類を判定できます。たとえば、マウスカーソルがヘッダを指す場合とセルを指す場合とで処理を変更することができます。
次のコードは、行のセル上でマウスボタンが押下された時、マウスカーソルが指し示すセルの背景色を変更します。
次のコードは、行のセル上でマウスボタンが押下された時、マウスカーソルが指し示すセルの背景色を変更します。
Imports GrapeCity.Win.MultiRow Private Sub GcMultiRow1_MouseDown(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles GcMultiRow1.MouseDown Dim GcMultiRow1 As GcMultiRow = TryCast(sender, GcMultiRow) Dim HitTestInfo1 As HitTestInfo = GcMultiRow1.HitTest(e.X, e.Y) If HitTestInfo1.Type = HitTestType.Row Then If HitTestInfo1.CellIndex > -1 Then GcMultiRow1(HitTestInfo1.SectionIndex, HitTestInfo1.CellIndex).Style.BackColor = Color.Azure End If End If End Sub
using GrapeCity.Win.MultiRow; private void gcMultiRow1_MouseDown(object sender, MouseEventArgs e) { GcMultiRow gcMultiRow = sender as GcMultiRow; HitTestInfo hitTestInfo1 = gcMultiRow.HitTest(e.X, e.Y); if (hitTestInfo1.Type == HitTestType.Row) { if (hitTestInfo1.CellIndex > -1) { gcMultiRow[hitTestInfo1.SectionIndex, hitTestInfo1.CellIndex].Style.BackColor = Color.Azure; } } }
行のコンテキスト メニュー
コンテキスト メニューは、行単位で設定することもできます。
次のコードは、最初の行のコンテキスト メニューを割り当てます。このメニューは、セル以外の場所やセルにコンテキスト メニューが指定されていない場合に表示されます。
次のコードは、最初の行のコンテキスト メニューを割り当てます。このメニューは、セル以外の場所やセルにコンテキスト メニューが指定されていない場合に表示されます。
Dim menu As ContextMenuStrip = New ContextMenuStrip() menu.Items.AddRange(New ToolStripItem() { _ New ToolStripMenuItem("テスト1"), New ToolStripMenuItem("テスト2") }) GcMultiRow1.Rows(0).ContextMenuStrip = menu
ContextMenuStrip menu = new ContextMenuStrip(); menu.Items.AddRange(new ToolStripItem[] { new ToolStripMenuItem("テスト1"), new ToolStripMenuItem("テスト2") }); gcMultiRow1.Rows[0].ContextMenuStrip = menu;
セルのコンテキスト メニュー
コンテキスト メニューは、Cell.ContextMenuStripプロパティを使用してセル単位で設定することもできます。
次のコードは、最初の行の最初のセルにコンテキスト メニューを割り当てます。
次のコードは、最初の行の最初のセルにコンテキスト メニューを割り当てます。
Dim menu As ContextMenuStrip = New ContextMenuStrip() menu.Items.AddRange(New ToolStripItem() { _ New ToolStripMenuItem("テスト1"), New ToolStripMenuItem("テスト2") }) GcMultiRow1.Rows(0).Cells(0).ContextMenuStrip = menu
ContextMenuStrip menu = new ContextMenuStrip(); menu.Items.AddRange(new ToolStripItem[] { new ToolStripMenuItem("テスト1"), new ToolStripMenuItem("テスト2") }); gcMultiRow1.Rows[0].Cells[0].ContextMenuStrip = menu;
セル編集コントロールのコンテキスト メニュー
セルの編集コントロールがコンテキスト メニューをサポートしている場合、セルの編集時にコンテキスト メニューを使用できます。
Imports GrapeCity.Win.MultiRow Private Sub GcMultiRow1_EditingControlShowing(ByVal sender As System.Object, ByVal e As GrapeCity.Win.MultiRow.EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing Dim TextBoxEditingControl1 As TextBoxEditingControl = DirectCast(e.Control, TextBoxEditingControl) If TextBoxEditingControl1 IsNot Nothing Then Dim menu As ContextMenuStrip = New ContextMenuStrip() menu.Items.AddRange(New ToolStripItem() { New ToolStripMenuItem("テスト1"), New ToolStripMenuItem("テスト2") }) TextBoxEditingControl1.ContextMenuStrip = menu End If End Sub
using GrapeCity.Win.MultiRow; private void gcMultiRow1_EditingControlShowing( object sender, EditingControlShowingEventArgs e) { TextBoxEditingControl textBoxEditingControl1 = e.Control as TextBoxEditingControl; if (textBoxEditingControl1 != null) { ContextMenuStrip menu = new ContextMenuStrip(); menu.Items.AddRange(new ToolStripItem[] { new ToolStripMenuItem("テスト1"), new ToolStripMenuItem("テスト2") }); textBoxEditingControl1.ContextMenuStrip = menu; } }