作成日: 2018/10/29 最終更新日: 2018/10/29
文書種別
使用方法
詳細
FlexGridのチェックボックス型セルでは、通常、チェックボックス部分をクリックすることでチェックのオン/オフの切り替えを行います。この切り替え動作を、セル内のどの部分をクリックしても反応するようにするには、C1FlexGridのHitTestメソッドを使用します。
手順としては、最初にMouseClickイベント内でこのHitTestメソッドを使用して、クリックしたセルの行インデックス/列インデックスを取得します。次いで、HitTestInfo構造体を用いて、そのマウス位置がチェックボックス上だったかどうかを判定します。「No」の場合、SetCellCheckメソッドを実行してチェックボックスのオン/オフを設定します。
◎サンプルコード(VB)
◎サンプルコード(C#)
手順としては、最初にMouseClickイベント内でこのHitTestメソッドを使用して、クリックしたセルの行インデックス/列インデックスを取得します。次いで、HitTestInfo構造体を用いて、そのマウス位置がチェックボックス上だったかどうかを判定します。「No」の場合、SetCellCheckメソッドを実行してチェックボックスのオン/オフを設定します。
◎サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
C1FlexGrid1.Cols(1).DataType = GetType(Boolean)
End Sub
Private Sub C1FlexGrid1_MouseClick(sender As Object, e As MouseEventArgs) Handles C1FlexGrid1.MouseClick
Dim htinfo As HitTestInfo = C1FlexGrid1.HitTest(e.X, e.Y)
Dim row As Integer = htinfo.Row
Dim col As Integer = htinfo.Column
If htinfo.Type = HitTestTypeEnum.Checkbox Then
Exit Sub
Else
If C1FlexGrid1.IsCellCheckBox(row, col) Then
Dim cen As C1.Win.C1FlexGrid.CheckEnum = C1FlexGrid1.GetCellCheck(row, col)
If cen = CheckEnum.Unchecked Or cen = CheckEnum.Grayed Then
C1FlexGrid1.SetCellCheck(row, col, CheckEnum.Checked)
Else
C1FlexGrid1.SetCellCheck(row, col, CheckEnum.Unchecked)
End If
End If
End If
End Sub
C1FlexGrid1.Cols(1).DataType = GetType(Boolean)
End Sub
Private Sub C1FlexGrid1_MouseClick(sender As Object, e As MouseEventArgs) Handles C1FlexGrid1.MouseClick
Dim htinfo As HitTestInfo = C1FlexGrid1.HitTest(e.X, e.Y)
Dim row As Integer = htinfo.Row
Dim col As Integer = htinfo.Column
If htinfo.Type = HitTestTypeEnum.Checkbox Then
Exit Sub
Else
If C1FlexGrid1.IsCellCheckBox(row, col) Then
Dim cen As C1.Win.C1FlexGrid.CheckEnum = C1FlexGrid1.GetCellCheck(row, col)
If cen = CheckEnum.Unchecked Or cen = CheckEnum.Grayed Then
C1FlexGrid1.SetCellCheck(row, col, CheckEnum.Checked)
Else
C1FlexGrid1.SetCellCheck(row, col, CheckEnum.Unchecked)
End If
End If
End If
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
c1FlexGrid1.Cols[1].DataType = typeof(bool);
}
private void c1FlexGrid1_MouseClick(object sender, MouseEventArgs e)
{
HitTestInfo htinfo = c1FlexGrid1.HitTest(e.X, e.Y);
int row = htinfo.Row;
int col = htinfo.Column;
if ((htinfo.Type == HitTestTypeEnum.Checkbox))
{
return;
}
else
if (c1FlexGrid1.IsCellCheckBox(row, col))
{
C1.Win.C1FlexGrid.CheckEnum cen = c1FlexGrid1.GetCellCheck(row, col);
if (((cen == CheckEnum.Unchecked) || (cen == CheckEnum.Grayed)))
{
c1FlexGrid1.SetCellCheck(row, col, CheckEnum.Checked);
}
else
{
c1FlexGrid1.SetCellCheck(row, col, CheckEnum.Unchecked);
}
}
}
{
c1FlexGrid1.Cols[1].DataType = typeof(bool);
}
private void c1FlexGrid1_MouseClick(object sender, MouseEventArgs e)
{
HitTestInfo htinfo = c1FlexGrid1.HitTest(e.X, e.Y);
int row = htinfo.Row;
int col = htinfo.Column;
if ((htinfo.Type == HitTestTypeEnum.Checkbox))
{
return;
}
else
if (c1FlexGrid1.IsCellCheckBox(row, col))
{
C1.Win.C1FlexGrid.CheckEnum cen = c1FlexGrid1.GetCellCheck(row, col);
if (((cen == CheckEnum.Unchecked) || (cen == CheckEnum.Grayed)))
{
c1FlexGrid1.SetCellCheck(row, col, CheckEnum.Checked);
}
else
{
c1FlexGrid1.SetCellCheck(row, col, CheckEnum.Unchecked);
}
}
}
旧文書番号
83339