チェックボックス型セル(CheckBoxCell)でTrueValueとFalseValueを変更しているときに編集中の値を参照するには?

文書番号 : 40517     文書種別 : 使用方法     登録日 : 2017/07/26     最終更新日 : 2017/07/26
文書を印刷する
対象製品
MultiRow for Windows Forms 10.0J
詳細
CheckBoxCellでは、他のセル型と同じようにCell.EditedFormattedValueプロパティを使用してセルの編集中の値を取得できます。ただし、CheckBoxCellでTrueValueとFalseValueプロパティを変更している場合には、これらの値をCheckBoxCell.EditedFormattedValueプロパティで取得することはできません。CheckBoxCell.EditedFormattedValueプロパティは、CheckBoxCell.FormattedValueTypeの型でフォーマットされるためです。
CheckBoxCellのTrueValueとFalseValueプロパティの値を参照するには、CheckBoxCell.EditedFormattedValueプロパティの値を元にそれぞれのプロパティを直接参照します。

[Visual Basic]
Imports GrapeCity.Win.MultiRow

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim checkBoxCell1 As New CheckBoxCell()
    checkBoxCell1.TrueValue = "Yes"
    checkBoxCell1.FalseValue = "No"
    GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {checkBoxCell1})
End Sub

Private Sub GcMultiRow1_CellEditedFormattedValueChanged(ByVal sender As System.Object, ByVal e As GrapeCity.Win.MultiRow.CellEditedFormattedValueChangedEventArgs) Handles GcMultiRow1.CellEditedFormattedValueChanged
    Dim gcMultiRow As GcMultiRow = TryCast(sender, GcMultiRow)
    If gcMultiRow.IsCurrentCellInEditMode Then
        If TypeOf gcMultiRow.CurrentCell Is CheckBoxCell Then
            Dim checkBoxCell1 As CheckBoxCell = TryCast(gcMultiRow.CurrentCell, CheckBoxCell)
            If DirectCast(checkBoxCell1.EditedFormattedValue, Boolean) Then
                Console.WriteLine(checkBoxCell1.TrueValue)
            Else
                Console.WriteLine(checkBoxCell1.FalseValue)
            End If
        End If
    End If
End Sub


[C#]
using GrapeCity.Win.MultiRow;

private void Form1_Load(object sender, EventArgs e)
{
    CheckBoxCell checkBoxCell1 = new CheckBoxCell();
    checkBoxCell1.TrueValue = "Yes";
    checkBoxCell1.FalseValue = "No";
    gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { checkBoxCell1 });
    
    this.gcMultiRow1.CellEditedFormattedValueChanged += new EventHandler<CellEditedFormattedValueChangedEventArgs>(gcMultiRow1_CellEditedFormattedValueChanged);
}

private void gcMultiRow1_CellEditedFormattedValueChanged(object sender, CellEditedFormattedValueChangedEventArgs e)
{
    GcMultiRow gcMultiRow = sender as GcMultiRow;
    if (gcMultiRow.IsCurrentCellInEditMode)
    {
        if (gcMultiRow.CurrentCell is CheckBoxCell)
        {
            CheckBoxCell checkBoxCell1 = gcMultiRow.CurrentCell as CheckBoxCell;
            if ((bool)checkBoxCell1.EditedFormattedValue)
            {
                Console.WriteLine(checkBoxCell1.TrueValue);
            }
            else
            {
                Console.WriteLine(checkBoxCell1.FalseValue);
            }
        }
    }
}