MESCIUS MultiRow for Windows Forms 12.0J
既定の設定における留意点

GcMultiRowコントロールでは、標準のグリッドコントロールや一般的なアプリケーションと同じような操作が既定で有効になっています。ここでは、グリッドの操作を制限する際に注意しておくべき既定の設定について説明します。
行の追加
既定の設定では、ユーザーが新規行の入力をとおして行を追加できます。この機能を無効にするには GcMultiRow.AllowUserToAddRowsプロパティをFalseに設定します。

GcMultiRow1.AllowUserToAddRows = False
gcMultiRow1.AllowUserToAddRows = false;
行の削除
既定の設定では、ユーザーが[Ctrl]+[Delete]の入力で行を削除できます。この機能を無効にするにはGcMultiRow.AllowUserToDeleteRowsプロパティをFalseに設定します。

GcMultiRow1.AllowUserToDeleteRows = False
gcMultiRow1.AllowUserToDeleteRows = false;

既定のショートカット キーの詳細は ショートカット キー を参照してください。
ズーム
既定の設定では、ユーザーがキーボードまたはマウス操作によってグリッドをズームできます。この機能を無効にするにはGcMultiRow.AllowUserToZoomプロパティをFalseに設定します。

GcMultiRow1.AllowUserToZoom = False
gcMultiRow1.AllowUserToZoom = false;
クリップボード操作(グリッド)
既定の設定では、ユーザーがキーボード操作によってセルの値をクリップボードにコピーできます。この機能を無効にするにはGcMultiRow.AllowClipboardプロパティをFalseに設定します。

GcMultiRow1.AllowClipboard = False
gcMultiRow1.AllowClipboard = false;
クリップボード操作(セル編集コントロール)
既定の設定では、各セルのセル編集コントロールにはクリップボード操作が提供されています。たとえば、TextBoxCellではTextBoxEditingControlによって編集中のクリップボード操作が有効です。これは、標準のTextBoxコントロールと同じです。
この機能を無効にするには次の操作を行います。

Imports GrapeCity.Win.MultiRow

Private Sub GcMultiRow1_EditingControlShowing(ByVal sender As System.Object, ByVal e As EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing
    If TypeOf e.Control Is TextBoxEditingControl Then
        Dim textBoxEditingControl As TextBoxEditingControl = _
            DirectCast(e.Control, TextBoxEditingControl)
        ' 空のコンテキストメニューで既定のメニューを無効にする
        textBoxEditingControl.ContextMenu = New ContextMenu()
        ' キーボード操作によるクリップボード操作を無効にする
        RemoveHandler textBoxEditingControl.KeyDown, AddressOf Me.textBoxEditingControl_KeyDown
        AddHandler textBoxEditingControl.KeyDown, AddressOf Me.textBoxEditingControl_KeyDown
    End If
End Sub

Private Sub textBoxEditingControl_KeyDown(ByVal sender As System.Object, ByVal e As KeyEventArgs)
    Dim textBox As TextBox = DirectCast(sender, TextBox)
    If e.Modifiers = Keys.Control Then
        e.Handled = True
        textBox.SelectionLength = 0
    End If
End Sub
using GrapeCity.Win.MultiRow;

private void Form1_Load(object sender, EventArgs e)
{
    gcMultiRow1.EditingControlShowing += new EventHandler<EditingControlShowingEventArgs>(gcMultiRow1_EditingControlShowing);
}

private void gcMultiRow1_EditingControlShowing(object sender, EditingControlShowingEventArgs e)
{
    if (e.Control is TextBoxEditingControl)
    {
        TextBoxEditingControl textBoxEditingControl = e.Control as TextBoxEditingControl;
        // 空のコンテキストメニューで既定のメニューを無効にする
        textBoxEditingControl.ContextMenu = new ContextMenu();
        // キーボード操作によるクリップボード操作を無効にする
        textBoxEditingControl.KeyDown -= new KeyEventHandler(textBoxEditingControl_KeyDown);
                textBoxEditingControl.KeyDown += new KeyEventHandler(textBoxEditingControl_KeyDown);
    }
}

private void textBoxEditingControl_KeyDown(object sender, KeyEventArgs e)
{
    TextBox textBox = sender as TextBox;
    if (e.Modifiers == Keys.Control)
    {
        e.Handled = true;
        textBox.SelectionLength = 0;
    }
}
セルの値の編集
TextBoxCellやDateTimePickerCellなどの編集可能なセル型では、既定でユーザーの入力が許可されています。この機能を無効にするには、次のいずれかの方法を使用します。

セルの選択
既定の設定では、HeaderCellとその派生クラス以外のセルは選択可能です。この機能を無効にするには、次のいずれかの方法を使用します。

セルのリサイズ
既定の設定では、HeaderCellとその派生クラスによるセルのリサイズが許可されています。すべてのセルに対してユーザーによるリサイズ操作を無効にするには、GcMultiRow.AllowUserToResizeプロパティをFalseに設定します。個々のセルでリサイズ操作を無効にするには、Cell.ResizeModeプロパティの値を変更します。

既定の設定では、次のセル型に対してリサイズが許可されています。

  • ColumnHeaderCell
  • CornerHeaderCell
  • RowHeaderCell
  • HeaderCell
null の入力
既定の設定では、ユーザーが[Ctrl]+[0]の入力でセルにnull(Visual BasicではNothing)を入力できます。この機能を無効にするには対応するショートカット キーを削除します。

GcMultiRow1.ShortcutKeyManager.Unregister(GrapeCity.Win.MultiRow.EditingActions.InputNullValue)
gcMultiRow1.ShortcutKeyManager.Unregister(GrapeCity.Win.MultiRow.EditingActions.InputNullValue);
セルの自動リサイズ
列ヘッダ型セルの境界をダブルクリックしたとき、対応するセルの表示内容に合わせてセルの幅が自動調整されます。既定の設定では、対象となるセルは画面に表示されている部分に限定されます。すべてのセルを対象とするには、GcMultiRow.AutoFitContentプロパティをAllに変更します。

GcMultiRow1.AutoFitContent = GrapeCity.Win.MultiRow.AutoFitContent.All
gcMultiRow1.AutoFitContent = GrapeCity.Win.MultiRow.AutoFitContent.All;
  • コントロールに大量のデータを読み込んでいる場合は、データ数に応じて処理時間が増大します。
       
関連トピック

 

 


© MESCIUS inc. All rights reserved.