グリッドのコンテキスト メニューを設定するには、
GcMultiRow.ContextMenuプロパティまたは
GcMultiRow.ContextMenuStripプロパティに表示するメニューを割り当てます。両方のプロパティにメニューが割り当てられた場合は
GcMultiRow.ContextMenuプロパティが優先されます。
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;
システムの既定の設定では、マウスの右クリックまたはアプリケーション キーでコンテキスト メニューを表示します。アプリケーション キーは[Shift]+[F10]キーで代替できます。
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;
}
}