作成日: 2019/01/30 最終更新日: 2019/01/30
文書種別
使用方法
詳細
※以下の内容は、C1NumericEditをカスタムエディタとして用いた場合にも当てはまります。
C1FlexGridのカスタムエディタとしてC1TextBoxを割り当てた場合、通常は各種検証イベントが以下の順序で発生します。
・C1FlexGrid.ValidateEdit
・C1TextBox.Validating
・C1TextBox.Validated
・C1FlexGrid.AfterEdit
一方、編集後にマウスカーソルをC1FlexGrid以外のコントロールに移動すると、イベント発生順は次のように変わります。
・C1FlexGrid.ValidateEdit
・C1FlexGrid.AfterEdit
・C1TextBox.Validating
・C1TextBox.Validated
例えばC1TextBox.ValidatingイベントとC1FlexGrid.AfterEditで何らかの処理を行っていた場合、これらのイベントの発生順が変わるために問題が発生することがあります。しかし、C1TextBoxコントロールでは、ValidateTextメソッドを実行するとそのタイミングでC1TextBoxのValidatingイベントやValidatedイベントが発生するので、これを利用してイベント発生順に係る問題に対応することができます。
上記ケースでは、以下のようにC1FlexGrid.ValidateEditイベントでC1TextBoxのValidateTextメソッドを実行します。
◎サンプルコード(VB)
◎サンプルコード(C#)
これにより、C1FlexGrid.AfterEditの前にC1TextBox.Validatingイベントが発生するようになります。
・C1FlexGrid1_ValidateEdit
・C1TextBox1_Validating
・C1TextBox1_Validated
・C1FlexGrid1_AfterEdit
・C1TextBox1_Validating
・C1TextBox1_Validated
※ただしこの場合C1TextBoxの各種検証イベントが2回ずつ発生するため、ケースに応じた対応が必要になることがありますのでご了承ください。
C1FlexGridのカスタムエディタとしてC1TextBoxを割り当てた場合、通常は各種検証イベントが以下の順序で発生します。
・C1FlexGrid.ValidateEdit
・C1TextBox.Validating
・C1TextBox.Validated
・C1FlexGrid.AfterEdit
一方、編集後にマウスカーソルをC1FlexGrid以外のコントロールに移動すると、イベント発生順は次のように変わります。
・C1FlexGrid.ValidateEdit
・C1FlexGrid.AfterEdit
・C1TextBox.Validating
・C1TextBox.Validated
例えばC1TextBox.ValidatingイベントとC1FlexGrid.AfterEditで何らかの処理を行っていた場合、これらのイベントの発生順が変わるために問題が発生することがあります。しかし、C1TextBoxコントロールでは、ValidateTextメソッドを実行するとそのタイミングでC1TextBoxのValidatingイベントやValidatedイベントが発生するので、これを利用してイベント発生順に係る問題に対応することができます。
上記ケースでは、以下のようにC1FlexGrid.ValidateEditイベントでC1TextBoxのValidateTextメソッドを実行します。
◎サンプルコード(VB)
Private Sub C1FlexGrid1_ValidateEdit(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.ValidateEditEventArgs)
If e.Col = 1 Then
Dim edtTB As C1TextBox = CType(C1FlexGrid1.Cols(e.Col).Editor, C1TextBox)
edtTB.ValidateText
End If
End Sub
If e.Col = 1 Then
Dim edtTB As C1TextBox = CType(C1FlexGrid1.Cols(e.Col).Editor, C1TextBox)
edtTB.ValidateText
End If
End Sub
◎サンプルコード(C#)
private void c1FlexGrid1_ValidateEdit(object sender, C1.Win.C1FlexGrid.ValidateEditEventArgs e)
{
if (e.Col == 1)
{
C1TextBox edtTB = c1FlexGrid1.Cols[e.Col].Editor as C1TextBox;
edtTB.ValidateText();
}
}
{
if (e.Col == 1)
{
C1TextBox edtTB = c1FlexGrid1.Cols[e.Col].Editor as C1TextBox;
edtTB.ValidateText();
}
}
これにより、C1FlexGrid.AfterEditの前にC1TextBox.Validatingイベントが発生するようになります。
・C1FlexGrid1_ValidateEdit
・C1TextBox1_Validating
・C1TextBox1_Validated
・C1FlexGrid1_AfterEdit
・C1TextBox1_Validating
・C1TextBox1_Validated
※ただしこの場合C1TextBoxの各種検証イベントが2回ずつ発生するため、ケースに応じた対応が必要になることがありますのでご了承ください。
旧文書番号
83599