作成日: 2022/07/05 最終更新日: 2022/07/05
文書種別
使用方法
詳細
C1FlexGridのエディタにC1NumericEditを設定してデータバインドした場合に、セルのテキストを全選択してDelキーを押すと、データが元の値に戻るかクリアされます※。
※それぞれ、C1NumericEditのEmptyAsNull = False/Trueにした場合
Delキー押下時のこの動作を変更し、0を表示させるには、ValidateEditイベントにてエディタの値を検査し、ヌルの場合に、AfterEditイベントにてセル値を0に設定する方法が考えられます。
以下に簡単なサンプルコードを記載します。

◎サンプルコード(VB)
※それぞれ、C1NumericEditのEmptyAsNull = False/Trueにした場合
Delキー押下時のこの動作を変更し、0を表示させるには、ValidateEditイベントにてエディタの値を検査し、ヌルの場合に、AfterEditイベントにてセル値を0に設定する方法が考えられます。
以下に簡単なサンプルコードを記載します。

◎サンプルコード(VB)
Imports C1.Win.C1Input
Public Class Form1
Dim tmpVal As Object = 0 'エディタの値保持用
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
' データの設定
Dim Table01 As DataTable = New DataTable()
Table01.Columns.Add("ID", GetType(Integer))
Table01.Columns.Add("価格", GetType(Integer))
Table01.Columns.Add("個数", GetType(Integer))
Table01.Rows.Add(1, 1000, 101)
Table01.Rows.Add(2, 800, 20)
Table01.Rows.Add(3, 300, 550)
Table01.Rows.Add(4, 400, 200)
Table01.AcceptChanges()
C1FlexGrid1.DataSource = Table01
' エディタの設定
C1FlexGrid1.Cols(2).Editor = New C1NumericEdit() With {
.EmptyAsNull = True,
.DataType = GetType(Integer)
}
C1FlexGrid1.Cols(3).Editor = New C1NumericEdit() With {
.EmptyAsNull = True,
.DataType = GetType(Integer)
}
End Sub
Private Sub C1FlexGrid1_ValidateEdit(sender As Object, e As C1.Win.C1FlexGrid.ValidateEditEventArgs) Handles C1FlexGrid1.ValidateEdit
tmpVal = C1FlexGrid1.Editor.Text
If (C1FlexGrid1.Editor.Text = "") Then
tmpVal = 0
End If
End Sub
Private Sub C1FlexGrid1_AfterEdit(sender As Object, e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.AfterEdit
C1FlexGrid1(C1FlexGrid1.Row, C1FlexGrid1.Col) = tmpVal
End Sub
End Class
◎サンプルコード(C#)
using C1.Win.C1Input;
namespace prj_C1FlexGrid2
{
public partial class Form1 : Form
{
Object tmpVal = 0; //エディタの値保持用
public Form1()
{
InitializeComponent();
// データの設定
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(Int32));
table.Columns.Add("価格", typeof(Int32));
table.Columns.Add("個数", typeof(Int32));
table.Rows.Add(1, 1000, 101);
table.Rows.Add(2, 800, 20);
table.Rows.Add(3, 300, 550);
table.Rows.Add(4, 400, 200);
table.AcceptChanges();
c1FlexGrid1.DataSource = table;
// エディタの設定
c1FlexGrid1.Cols[2].Editor = new C1NumericEdit()
{
EmptyAsNull = true,
DataType = typeof(Int32),
};
c1FlexGrid1.Cols[3].Editor = new C1NumericEdit()
{
EmptyAsNull = true,
DataType = typeof(Int32),
};
}
private void c1FlexGrid1_ValidateEdit(object sender, ValidateEditEventArgs e)
{
tmpVal = c1FlexGrid1.Editor.Text;
if (c1FlexGrid1.Editor.Text == "")
{
tmpVal = 0;
}
}
private void c1FlexGrid1_AfterEdit(object sender, RowColEventArgs e)
{
c1FlexGrid1[c1FlexGrid1.Row, c1FlexGrid1.Col] = tmpVal;
}
}
}