作成日: 2024/02/28 最終更新日: 2024/02/28
文書種別
使用方法
詳細
非連結モードで、オン/オフ/不確定の3つの状態を持つチェックボックスを作成するには、C1FlexGridのGetCellCheckメソッドを使用します。
チェックボックスのクリック時に3つの状態を切り替えるには、ValidateEditイベントにて、GetCellCheckメソッドを用いてチェックボックスの状態を取得し、それに応じてSetCellCheckで状態を再設定します。
以下に、簡単なサンプルを紹介します。
※事前に、grayed.gif(不確定状態の画像)をプロジェクトフォルダに追加してください。
なお、画像を変更しない場合は下記コードをコメントアウトしてください。

◎サンプルコード(VB)
チェックボックスのクリック時に3つの状態を切り替えるには、ValidateEditイベントにて、GetCellCheckメソッドを用いてチェックボックスの状態を取得し、それに応じてSetCellCheckで状態を再設定します。
以下に、簡単なサンプルを紹介します。
※事前に、grayed.gif(不確定状態の画像)をプロジェクトフォルダに追加してください。
なお、画像を変更しない場合は下記コードをコメントアウトしてください。
C1FlexGrid1.Glyphs(GlyphEnum.Grayed) = Image.FromFile("../../grayed.gif")
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 行・列数の設定
C1FlexGrid1.Rows.Count = 5
C1FlexGrid1.Cols.Count = 4
' タイトル列の幅と文字色を指定
C1FlexGrid1.Cols(0).Width = 150
' ボタンを常時表示
C1FlexGrid1.ShowButtons = ShowButtonsEnum.Always
' タイトルの設定
C1FlexGrid1(1, 0) = "チェックボックス型(3値)"
' 不確定状態の画像変更
C1FlexGrid1.Glyphs(GlyphEnum.Grayed) = Image.FromFile("../../grayed.gif")
' データの設定
C1FlexGrid1.SetCellCheck(1, 1, CheckEnum.Checked)
C1FlexGrid1.SetCellCheck(1, 2, CheckEnum.Grayed)
C1FlexGrid1.SetCellCheck(1, 3, CheckEnum.Unchecked)
End Sub
Private Sub C1FlexGrid1_ValidateEdit(sender As Object, e As C1.Win.C1FlexGrid.ValidateEditEventArgs) Handles C1FlexGrid1.ValidateEdit
If e.Row = 1 Then
e.Cancel = True
If C1FlexGrid1.GetCellCheck(e.Row, e.Col) = CheckEnum.Grayed Then
C1FlexGrid1.SetCellCheck(e.Row, e.Col, CheckEnum.Unchecked)
ElseIf C1FlexGrid1.GetCellCheck(e.Row, e.Col) = CheckEnum.Unchecked Then
C1FlexGrid1.SetCellCheck(e.Row, e.Col, CheckEnum.Checked)
ElseIf C1FlexGrid1.GetCellCheck(e.Row, e.Col) = CheckEnum.Checked Then
C1FlexGrid1.SetCellCheck(e.Row, e.Col, CheckEnum.Grayed)
End If
End If
End Sub
End Class
◎サンプルコード(C#)
using C1.Win.C1FlexGrid;
namespace prj_C1FlexGrid
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// 行・列数の設定
c1FlexGrid1.Rows.Count = 5;
c1FlexGrid1.Cols.Count = 4;
// タイトル列の幅と文字色を指定
c1FlexGrid1.Cols[0].Width = 150;
// ボタンを常時表示
c1FlexGrid1.ShowButtons = ShowButtonsEnum.Always;
// タイトルの設定
c1FlexGrid1[1, 0] = "チェックボックス型(3値)";
// 不確定状態の画像変更
c1FlexGrid1.Glyphs[GlyphEnum.Grayed] = Image.FromFile("../../grayed.gif");
// データの設定
//for (int i = 1; i < c1FlexGrid1.Cols.Count; i++) { c1FlexGrid1.SetCellCheck(1, i, CheckEnum.Grayed); }
c1FlexGrid1.SetCellCheck(1, 1, CheckEnum.Checked);
c1FlexGrid1.SetCellCheck(1, 2, CheckEnum.Grayed);
c1FlexGrid1.SetCellCheck(1, 3, CheckEnum.Unchecked);
}
private void c1FlexGrid1_ValidateEdit(object sender, ValidateEditEventArgs e)
{
if (e.Row == 1)
{
e.Cancel = true;
if(c1FlexGrid1.GetCellCheck(e.Row, e.Col) == CheckEnum.Grayed)
{
c1FlexGrid1.SetCellCheck(e.Row, e.Col, CheckEnum.Unchecked);
}
else if (c1FlexGrid1.GetCellCheck(e.Row, e.Col) == CheckEnum.Unchecked)
{
c1FlexGrid1.SetCellCheck(e.Row, e.Col, CheckEnum.Checked);
}
else if (c1FlexGrid1.GetCellCheck(e.Row, e.Col) == CheckEnum.Checked)
{
c1FlexGrid1.SetCellCheck(e.Row, e.Col, CheckEnum.Grayed);
}
}
}
}