FlexGrid for WinForms
基本的な操作
セル > 基本的な操作

セルに値を設定

FlexGrid でセルに値を設定する方法は 2 つあります。Item プロパティ(インデクサ)または C1FlexGrid クラスの SetData メソッドを使用できます。

以下のコードを使用して、WinForms FlexGrid のセルに値を設定します。

// インデックスを使用してデータを設定します
c1FlexGrid1[2, 3] = "2nd col 3rd row";
                                        
// SetDataメソッドを使用してデータを設定します
c1FlexGrid1.SetData(2, 4, "2nd col 4th row");
    ' インデックスを使用してデータを設定します
    c1FlexGrid1(2, 3) = "2nd col 3rd row"

    ' SetDataメソッドを使用してデータを設定します
    c1FlexGrid1.SetData(2, 4, "2nd col 4th row")                        

セル範囲に値を設定

セル範囲に値を設定するには、CellRange クラスの Data プロパティまたは C1FlexGrid クラスの SetData メソッドを使用できます。

以下のコードは、WinForms FlexGrid でセル範囲に値を設定する方法を示しています。

// セル範囲を取得します
C1.Win.C1FlexGrid.CellRange cr = c1FlexGrid1.GetCellRange(2, 3, 5, 6);
                                        
// 方法 1: dataプロパティを使用して、セル範囲にデータを設定します
cr.Data = "Cell Range";

// 方法 2: SetDataメソッドを使用してセル範囲にデータを設定します
// c1FlexGrid1.SetData(cr, "Cell Range");
    ' セル範囲を取得します
    Dim cr As C1.Win.C1FlexGrid.CellRange = c1FlexGrid1.GetCellRange(2, 3, 5, 6)

    ' dataプロパティを使用して、セル範囲にデータを設定します
    cr.Data = "Cell Range"

    ' SetDataメソッドを使用してセル範囲にデータを設定します
    ' c1FlexGrid1.SetData(cr, "Cell Range")      

セル(範囲)から値をクリア

セルまたはセル範囲のコンテンツをクリアするには、2 つの方法があります。プログラムからは、インデクサまたは SetData メソッドを使用してセルのコンテンツに空の文字列を設定することで、コンテンツをクリアできます。または、AutoClipboard プロパティに true を設定することで、ユーザーが[Del]キーを押して値を削除できるようにします。

以下のコードは、キーボード操作によって WinForms FlexGrid のセルから値をクリアできるようにする方法を具体的に示しています。

// ユーザーがDeleteキーを押してセルの内容をクリアするなどのキーボード操作を実行できるようにします
c1FlexGrid1.AutoClipboard = true;

// コードを使用して特定のセルのデータをクリアします
c1FlexGrid1.SetData(3, 4, "");
    ' ユーザーがDeleteキーを押してセルの内容をクリアするなどのキーボード操作を実行できるようにします
    c1FlexGrid1.AutoClipboard = True

    ' コードを使用して特定のセルのデータをクリアします
    c1FlexGrid1.SetData(3, 4, "")   

セルに画像を設定

セルに画像を設定するには、C1FlexGrid クラスの SetCellImage メソッドを使用できます。また、CellRange クラスの Image プロパティを使用してセル範囲に画像を設定することもできます。デフォルトでは、セルにテキストと画像の両方が表示されます。ただし、ImageAndText プロパティに false を設定することで、画像のみを表示するように選択できます。

セルに画像を設定

以下のコードを使用して、WinForms FlexGrid のセルに画像を設定します。

// セル(3,6)に画像を設定します
c1FlexGrid1.SetCellImage(3, 6, Image.FromFile("master.png"));

// セル範囲(12,6)から(14、6)に画像を設定します
C1.Win.C1FlexGrid.CellRange cr;
cr = c1FlexGrid1.GetCellRange(12, 6, 14, 6);
cr.Image = Image.FromFile("amex.jpg");

// テキストなしで画像を表示します
c1FlexGrid1.Rows[3].ImageAndText = false;
    ' セル(3,6)に画像を設定します
    c1FlexGrid1.SetCellImage(3, 6, Image.FromFile("master.png"))

    ' セル範囲(12,6)から(14、6)に画像を設定します
    Dim cr As C1.Win.C1FlexGrid.CellRange
    cr = c1FlexGrid1.GetCellRange(12, 6, 14, 6)
    cr.Image = Image.FromFile("amex.jpg")

    ' テキストなしで画像を表示します
    c1FlexGrid1.Rows(3).ImageAndText = False      

セルにツールチップを表示

部分的に非表示のセルのコンテンツをツールチップとして表示するために、FlexGrid には、C1FlexGrid クラスの ShowCellLabels プロパティがあります。また、MouseEnterCell イベントと MouseLeaveCell イベントを使用して、ツールチップの形式で追加情報を表示することもできます。

セルにツールチップを表示

以下のコードは、WinForms FlexGrid のセルにツールチップを表示する方法を示しています。

private void Form1_Load(object sender, EventArgs e)
        {
            // 'c1NWindDataSet.Employees'テーブルにデータをロードします。 必要に応じて、移動または削除できます。
            this.employeesTableAdapter.Fill(this.c1NWindDataSet.Employees);
          
            for (int i = c1FlexGrid1.Rows.Fixed; i < c1FlexGrid1.Rows.Count; i++)
            {
                c1FlexGrid1.Rows[i].UserData = "Employee: " + c1FlexGrid1[i, 2] + " " + c1FlexGrid1[i, 3];
            }
        }
        private void C1FlexGrid1_MouseEnterCell(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
        {
            if (e.Row >= c1FlexGrid1.Rows.Fixed)
            {
                string tip;
                tip = c1FlexGrid1.Rows[e.Row].UserData.ToString();
                // ツールチップを表示します
                toolTip1.SetToolTip(c1FlexGrid1, tip);
            }
        }

        private void C1FlexGrid1_MouseLeaveCell(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
        {
            // ツールチップを非表示にします
            toolTip1.SetToolTip(c1FlexGrid1, "");
        }     
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
        ' 'c1NWindDataSet.Employees'テーブルにデータをロードします。 必要に応じて、移動または削除できます。
        Me.employeesTableAdapter.Fill(Me.c1NWindDataSet.Employees)

        For i As Integer = c1FlexGrid1.Rows.Fixed To c1FlexGrid1.Rows.Count - 1
            c1FlexGrid1.Rows(i).UserData = "Employee: " & c1FlexGrid1(i, 2) & " " + c1FlexGrid1(i, 3)
        Next
    End Sub

    Private Sub C1FlexGrid1_MouseEnterCell(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.RowColEventArgs)
        If e.Row >= c1FlexGrid1.Rows.Fixed Then
            Dim tip As String
            tip = c1FlexGrid1.Rows(e.Row).UserData.ToString()
            ' ツールチップを表示します
            toolTip1.SetToolTip(c1FlexGrid1, tip)
        End If
    End Sub

    Private Sub C1FlexGrid1_MouseLeaveCell(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.RowColEventArgs)
        ' ツールチップを非表示にします
        toolTip1.SetToolTip(c1FlexGrid1, "")
    End Sub

セル値の取得

FlexGrid のセル値を取得する方法は、要件に応じて数多くあります。以下の表では、単一のセルまたはセル範囲から生データまたは書式設定されたデータを取得する方法など、いくつかのシナリオについて説明します。

必要条件 メソッド/プロパティ 使用方法
生データの取得 Item プロパティ(インデクサ)
ExampleCode
コードのコピー
    var data = c1FlexGrid1[1, 1];
    System.Diagnostics.Debug.WriteLine($"セルデータ: {data}");                           
GetData() メソッド
ExampleCode
コードのコピー
    var data1 = c1FlexGrid1.GetData(1, 1);
    System.Diagnostics.Debug.WriteLine($"セルデータ: {data1}");                                              
書式設定されたデータの取得 GetDataDisplay() メソッド
ExampleCode
コードのコピー
    var data2 = c1FlexGrid1.GetDataDisplay(1, 1);
    System.Diagnostics.Debug.WriteLine($"表示データ: {data2}");                                    
セル範囲の値の取得 Clip プロパティ
ExampleCode
コードのコピー
    var data3 = c1FlexGrid1.Clip;
    System.Diagnostics.Debug.WriteLine($"クリップデータ: {data3}");                                    
GetCellRange メソッド
ExampleCode
コードのコピー
   var data4 = c1FlexGrid1.GetCellRange(1, 1);
   System.Diagnostics.Debug.WriteLine($"セル範囲データ: {data4.Clip}");                              
関連トピック