FlexGrid for WinForms
選択範囲

選択モード

FlexGrid では、デフォルトで、マウスまたはキーボードを使用して隣接する複数のセルを一度に選択したり、行または列のヘッダーをクリックしてその行または列全体を選択することができます。ただし、このデフォルトの動作を変更して、セル、行、列などの単位で選択することもできます。それには、C1FlexGrid クラスの SelectionMode プロパティを使用します。このプロパティは、SelectionModeEnum 列挙に含まれる値を受け取ります。 次の表内のスナップショットは、以下の各モードで要素がどのように選択されるかを示しています。

説明 スナップショット
Default マウスまたはキーボードを使用して、隣接する複数のセルを一度に選択できます。また、行または列のヘッダーをクリックすることで、その行または列全体を選択できます。
Cell 一度に 1 個のセルを選択できます。 1 個のセルを選択
CellRange マウスまたはキーボードを使用して、隣接する複数のセルを一度に選択できます。 セル範囲を選択
Column 一度に 1 個の列を選択できます。 1 個の列を選択
ColumnRange 一度に隣接する複数の列を選択できます。 列範囲を選択
ListBox [Ctrl]キーを使用して、隣接していない複数の行を選択できます。 リストボックスを選択
Row 一度に 1 つの行を選択できます。 1 つの行を選択
RowRange 一度に隣接する複数の行を選択できます。 行範囲を選択
MultiRange Ctrl]キーを使用して、連続していないセルの複数のブロックを選択できます。

次のコード スニペットは、SelectionMode プロパティを MultiRange に設定して、グリッドで複数範囲選択を有効にする方法を示しています。

C#
コードのコピー
c1FlexGrid1.SelectionMode = C1.Win.FlexGrid.SelectionModeEnum.MultiRange;

選択範囲の設定

FlexGrid では、コードを使用して、さまざまな方法で選択範囲を設定できます。1 個のセル、セル範囲、複数の行など、選択範囲の要件に応じて、以下の方法を使用できます。

選択範囲 メソッド/プロパティ サンプルコード
1 個のセル Row プロパティと Col プロパティを設定します。 これらのプロパティのデフォルト値は 1 です。 したがって、デフォルトでは、グリッドの左上にある最初のスクロール可能セルに選択範囲が設定されます。
Example Title
コードのコピー
c1FlexGrid1.Row = 2;
c1FlexGrid1.Col = 1;
                                        
1 個のセルを選択するには、Select(rowIndex, colIndex) メソッドを呼び出します。
Example Title
コードのコピー
c1FlexGrid1.Select(2, 1);
セル範囲 RowSel プロパティと ColSel プロパティを設定します。 選択範囲は、Row プロパティと Col プロパティで設定された値から、指定された行と列までに設定されます。ブロック選択範囲を指定するには、RowSelColSel を設定する前に RowCol を設定する必要があります。
Example Title
コードのコピー
c1FlexGrid1.Row = 2;
c1FlexGrid1.Col = 1;
c1FlexGrid1.RowSel = 4;
c1FlexGrid1.ColSel = 3;
                                        
1 回の呼び出しで 1 つのセル範囲を選択するには、Select(CellRange, Boolean) メソッドを呼び出します。
Example Title
コードのコピー
CellRange cellRange = new CellRange();
cellRange.r1 = 2;
cellRange.r2 = 4;
cellRange.c1 = 1;
cellRange.c2 = 3;
c1FlexGrid1.Select(cellRange);
                                        

(SelectionModes =

SelectionModesEnum.

ListBox の場合)

隣接していない行を選択するには、それぞれの行オブジェクトに対して、Row.Selected プロパティを true に設定します。
Example Title
コードのコピー
c1FlexGrid1.SelectionMode = SelectionModeEnum.ListBox;
c1FlexGrid1.Rows[1].Selected = true;
c1FlexGrid1.Rows[4].Selected = true;
                                        

選択範囲の取得

 WinForms FlexGrid の選択範囲を取得するには、C1FlexGrid クラスの Selection プロパティを使用します。

 private void Button1_Click(object sender, EventArgs e)
   {
     C1.Win.C1FlexGrid.CellRange cr;
     cr = c1FlexGrid1.Selection;
     MessageBox.Show("Selected range\n" +
     cr.r1 + ":" + cr.c1 + " to " + cr.r2 + ":" + cr.c2);            
    }
                                       
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim cr As C1.Win.C1FlexGrid.CellRange
    cr = C1FlexGrid1.Selection
    MessageBox.Show("Selected range" & vbLf & cr.r1.ToString() & ":" + cr.c1.ToString() & " to " + cr.r2.ToString() & ":" + cr.c2.ToString())
End Sub

ダブルクリックでのテキスト選択

デフォルトでは、グリッドセルをダブルクリックすると、セルの状態が編集モードに変わり、マウスポインタの位置にカーソルが表示されます。この動作を変更して、セルのダブルクリックでセルの値を選択することができます。それには、BeforeDoubleClick イベントでダブルクリックを検出して無効にします。次に、StartEditing メソッドを呼び出して編集モードに入り、エディタを TextBox に変更してから、SelectAll メソッドを呼び出してセル値を選択します。

次のコードは、ダブルクリックで WinForms FlexGrid のセルのテキストを選択する方法を示しています。

private void C1FlexGrid1_BeforeDoubleClick(object sender, BeforeMouseDownEventArgs e)
  {
    // デフォルトのダブルクリックを無効にします
    e.Cancel = true;
    // 編集モードに入ります
    c1FlexGrid1.StartEditing();
    // TextBoxクラスに変換し、SelectAllメソッドを使用して選択します
    TextBox tb = (TextBox)c1FlexGrid1.Editor;
    tb.SelectAll();
  }
Private Sub C1FlexGrid1_BeforeDoubleClick(ByVal sender As Object, ByVal e As BeforeMouseDownEventArgs)
    ' デフォルトのダブルクリックを無効にします
    e.Cancel = True
    ' 編集モードに入ります
    c1FlexGrid1.StartEditing()
    ' TextBoxクラスに変換し、SelectAllメソッドを使用して選択します
    Dim tb As TextBox = CType(c1FlexGrid1.Editor, TextBox)
    tb.SelectAll()
End Sub            

選択されているデータの統計情報を表示

フッターに Excel スタイルのデータサマリーを表示する機能を提供することで、選択したセル範囲で実行された基本的な機能と操作の統計を表示できます。 これらの関数または操作には、コンテキスト メニューから選択したセルに適用できる合計、平均、カウント、最大数、最小数、個別のカウントなどの集計操作が含まれます。 AggregateDefinition クラスの Aggregateプロパティを使用して、選択したセル範囲のデータ概要を提供できます。

Aggregate プロパティは AggregateEnum 列挙体を使用して、次のいずれかの値を設定することにより、セルに適用される集計関数を設定します。

FlexGridのフッターに選択統計を表示するには、まず、グリッドの下部にドッキングされた「tslSelectionStatistics」という名前の ToolStripLabel を追加します。次に、以下のコードを C1FlexGridBase クラスの SelChange イベントに追加します。 このイベントは、ユーザーがグリッド内でマウスを使用して選択範囲を拡張すると発生します。

C#
コードのコピー
private void c1FlexGrid1_SelChange(object sender, EventArgs e)
{
    var text = string.Empty;
    if (!flexGrid1.Selection.IsSingleCell)
    {
        text = $"Average: {flexGrid1.Aggregate(AggregateEnum.Average):F2}  " +
       $"Count: {flexGrid1.Aggregate(AggregateEnum.Count)}  " +
       $"Summary: {flexGrid1.Aggregate(AggregateEnum.Sum):F2}";
    }
    //ツールストリップ ラベルに表示されるテキストを設定します。
    tslSelectionStatistics.Text = text;
}