作成日: 2024/07/02 最終更新日: 2024/07/02
文書種別
使用方法
詳細
セルに入力された値に誤りがあった場合、前回の入力値に戻し、フォーカスを維持した状態のままにするには、ValidateEditイベントでe.Cancel=trueに設定し、EditorのResetTextメソッドで値をEmptyにリセットした後、Editor.Textを元の値に変更する方法が考えられます。
以下に、10を超える値を入力したときに、前回の値に戻すサンプルを紹介します。

◎サンプルコード(VB)
以下に、10を超える値を入力したときに、前回の値に戻すサンプルを紹介します。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' c1FlexGrid設定
C1FlexGrid1.Cols(1).DataType = GetType(Integer)
C1FlexGrid1.EmptyAsNull = True
C1FlexGrid1.Cols(1)(0) = "数値型"
End Sub
Private Sub C1FlexGrid1_ValidateEdit(sender As Object, e As ValidateEditEventArgs) Handles C1FlexGrid1.ValidateEdit
Label1.Text = ""
If e.Col = 1 AndAlso C1FlexGrid1.Editor IsNot Nothing Then
If C1FlexGrid1.Editor.Text IsNot "" AndAlso Convert.ToInt32(C1FlexGrid1.Editor.Text) 10 Then
Debug.WriteLine("c1FlexGrid1.Editor.Text = " & C1FlexGrid1.Editor.Text.ToString())
Label1.Text = "1列目には10以下の数値を入力してください"
e.Cancel = True
C1FlexGrid1.Editor.ResetText()
C1FlexGrid1.Editor.Text = Convert.ToString(C1FlexGrid1(e.Row, e.Col))
End If
End If
End Sub
End Class
◎サンプルコード(C#)
using C1.Win.C1FlexGrid;
namespace Sample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// c1FlexGrid設定
c1FlexGrid1.Cols[1].DataType = typeof(int);
c1FlexGrid1.EmptyAsNull = true;
c1FlexGrid1.Cols[1][0] = "数値型";
}
private void c1FlexGrid1_ValidateEdit(object sender, ValidateEditEventArgs e)
{
label1.Text = "";
if (e.Col == 1 && c1FlexGrid1.Editor != null)
{
if (c1FlexGrid1.Editor.Text != "" && Convert.ToInt32(c1FlexGrid1.Editor.Text) 10)
{
System.Diagnostics.Debug.WriteLine("c1FlexGrid1.Editor.Text = " + c1FlexGrid1.Editor.Text);
label1.Text = "1列目には10以下の数値を入力してください";
e.Cancel = true;
c1FlexGrid1.Editor.ResetText();
c1FlexGrid1.Editor.Text = Convert.ToString(c1FlexGrid1[e.Row, e.Col]);
}
}
}
}
}