MESCIUS MultiRow for Windows Forms 12.0J
コンテキスト メニュー

GcMultiRowコントロールでは、グリッドとセル編集コントロールにコンテキスト メニュー(右クリック メニュー)を設定できます。
グリッドのコンテキスト メニュー
グリッドのコンテキスト メニューを設定するには、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;
    }
}
   
関連トピック

 

 


© MESCIUS inc. All rights reserved.