作成日: 2026/05/01 最終更新日: 2026/05/01
文書種別
使用方法
詳細
データ連結したFlexGridでは、クリックしたセルの列名などを、MouseClickイベントにてHitTestメソッドを使用することで取得できます。
最初にMouseClickイベントで、C1FlexGridのHitTestメソッドを使用し、クリックしたセルの行番号、列番号を特定します。
次いで列名を、この列番号に対応するColumnオブジェクトのNameプロパティから参照できます。
またこの行番号/列番号を元にセル値を求めたり、Typeプロパティから固定行や通常セルといったセルの種類を得ることも可能です。
これらを取得するためのコードを以下に記載します。
◎サンプルコード(VB)
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
C1FlexGrid1.DataSource = GetMyDataTable()
End Sub
Private Sub C1FlexGrid1_MouseClick(sender As Object, e As MouseEventArgs) Handles C1FlexGrid1.MouseClick
' セルに関するデータの取得
Dim hitInfo = C1FlexGrid1.HitTest(e.X, e.Y)
Dim row As Integer = hitInfo.Row ' 行番号
Dim col As Integer = hitInfo.Column ' 列番号
Dim columnName As String = C1FlexGrid1.Cols(col).Name ' 元データの列名
Dim cellValue As String = If(C1FlexGrid1(row, col)?.ToString(), "") ' セル値:Nullなら空白、それ以外なら実値
Dim cellType As String = hitInfo.Type.ToString() ' セルタイプ
' デバッグ出力
System.Diagnostics.Debug.WriteLine($"行:{row}, 列:{col}, 列名:{columnName}, 値:{cellValue}, セルタイプ:{cellType}")
End Sub
Function GetMyDataTable() As DataTable
Dim dt As New DataTable()
dt.Columns.Add("ColumnA", GetType(Int32))
dt.Columns.Add("ColumnB", GetType(String))
For i As Integer = 0 To C1FlexGrid1.Rows.Count - 1
dt.Rows.Add(i, String.Format("B{0}", i))
Next
dt.AcceptChanges()
Return dt
End Function
End Class
◎サンプルコード(C#)
namespace prj_C1FlexGrid
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
c1FlexGrid1.DataSource = GetMyDataTable();
}
private void c1FlexGrid1_MouseClick(object sender, MouseEventArgs e)
{
// セルに関するデータの取得
var hitInfo = c1FlexGrid1.HitTest(e.X, e.Y);
int row = hitInfo.Row; // 行番号
int col = hitInfo.Column; // 列番号
string columnName = c1FlexGrid1.Cols[col].Name; // 元データの列名
string cellValue = c1FlexGrid1[row, col]?.ToString() ?? ""; // セル値:Nullなら空白、それ以外なら実値
string cellType = hitInfo.Type.ToString(); // セルタイプ
// デバッグ出力
System.Diagnostics.Debug.WriteLine($"行:{row}, 列:{col}, 列名:{columnName}, 値:{cellValue}, セルタイプ:{cellType}");
}
DataTable GetMyDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("ColumnA", typeof(int));
dt.Columns.Add("ColumnB", typeof(string));
for (int i = 0; i < c1FlexGrid1.Rows.Count; i++)
{
dt.Rows.Add(i, string.Format("B{0}", i));
}
dt.AcceptChanges();
return dt;
}
}
}