作成日: 2014/09/26 最終更新日: 2014/09/26
文書種別
使用方法
詳細
セルの内容を変更すると発生する、Changeイベントを使用します。バイト関連の処理は(.NET Framework)EncodingクラスのGetByte、GetByteCount、GetStringメソッドを使用します。下記のコードでは、10バイト以上が入力された場合は、先頭から10バイト分のみを有効にしています。
◎サンプルコード(VB)
◎サンプルコード(C#)
private System.Text.Encoding enc;
private void Form1_Load(object sender, EventArgs e)
{
・・・
enc = System.Text.Encoding.GetEncoding("shift-jis");
}
private void c1TrueDBGrid1_Change(object sender, EventArgs e)
{
// 1列目のみチェック
if (c1TrueDBGrid1.Col == 1)
{
foreach (Control ctrl in c1TrueDBGrid1.Controls)
{
if (ctrl is System.Windows.Forms.TextBox)
{
TextBox tb = (TextBox)ctrl;
// 10バイト以上が入力された場合
if (enc.GetByteCount(tb.Text) > 10)
{
// 先頭から10バイトのみをエディタに設定
tb.Text = enc.GetString(enc.GetBytes(tb.Text), 0, 10);
tb.SelectionStart = tb.TextLength;
}
}
}
}
}
また、編集後に他のセルに移動しようとした際に発生するBeforeColUpdateイベント内で、セル内の文字列をバイト数でチェックを行うといった動作も可能です。
◎サンプルコード(VB)
◎サンプルコード(C#)
private void c1TrueDBGrid1_BeforeColUpdate(object sender, C1.Win.C1TrueDBGrid.BeforeColUpdateEventArgs e)
{
// 1列目のみチェック
if (e.ColIndex == 1)
{
int count;
count = System.Text.Encoding.Default.GetByteCount
(c1TrueDBGrid1.Columns[e.ColIndex].Value.ToString());
if (count > 10)
{
MessageBox.Show("入力制限(10バイト)");
e.Cancel = true;
}
}
}
◎サンプルコード(VB)
Dim enc As System.Text.Encoding
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
・・・
enc = System.Text.Encoding.GetEncoding("shift-jis")
End Sub
Private Sub C1TrueDBGrid1_Change(ByVal sender As Object, ByVal e As System.EventArgs) Handles C1TrueDBGrid1.Change
' 1列目のみチェック
If C1TrueDBGrid1.Col = 1 Then
For Each ctrl As Control In C1TrueDBGrid1.Controls
If TypeOf ctrl Is TextBox Then
Dim tb As TextBox = CType(ctrl, TextBox)
' 10バイト以上が入力された場合
If enc.GetByteCount(tb.Text) > 10 Then
' 先頭から10バイトのみをエディタに設定
tb.Text = enc.GetString(enc.GetBytes(tb.Text), 0, 10)
tb.SelectionStart = tb.TextLength
End If
End If
Next
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
・・・
enc = System.Text.Encoding.GetEncoding("shift-jis")
End Sub
Private Sub C1TrueDBGrid1_Change(ByVal sender As Object, ByVal e As System.EventArgs) Handles C1TrueDBGrid1.Change
' 1列目のみチェック
If C1TrueDBGrid1.Col = 1 Then
For Each ctrl As Control In C1TrueDBGrid1.Controls
If TypeOf ctrl Is TextBox Then
Dim tb As TextBox = CType(ctrl, TextBox)
' 10バイト以上が入力された場合
If enc.GetByteCount(tb.Text) > 10 Then
' 先頭から10バイトのみをエディタに設定
tb.Text = enc.GetString(enc.GetBytes(tb.Text), 0, 10)
tb.SelectionStart = tb.TextLength
End If
End If
Next
End If
End Sub
◎サンプルコード(C#)
private System.Text.Encoding enc;
private void Form1_Load(object sender, EventArgs e)
{
・・・
enc = System.Text.Encoding.GetEncoding("shift-jis");
}
private void c1TrueDBGrid1_Change(object sender, EventArgs e)
{
// 1列目のみチェック
if (c1TrueDBGrid1.Col == 1)
{
foreach (Control ctrl in c1TrueDBGrid1.Controls)
{
if (ctrl is System.Windows.Forms.TextBox)
{
TextBox tb = (TextBox)ctrl;
// 10バイト以上が入力された場合
if (enc.GetByteCount(tb.Text) > 10)
{
// 先頭から10バイトのみをエディタに設定
tb.Text = enc.GetString(enc.GetBytes(tb.Text), 0, 10);
tb.SelectionStart = tb.TextLength;
}
}
}
}
}
また、編集後に他のセルに移動しようとした際に発生するBeforeColUpdateイベント内で、セル内の文字列をバイト数でチェックを行うといった動作も可能です。
◎サンプルコード(VB)
Private Sub C1TrueDBGrid1_BeforeColUpdate(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.BeforeColUpdateEventArgs) Handles C1TrueDBGrid1.BeforeColUpdate
' 1列目のみチェック
If e.ColIndex = 1 Then
Dim count As Integer
count = System.Text.Encoding.Default.GetByteCount _
(C1TrueDBGrid1.Columns(e.ColIndex).Value)
If count > 10 Then
MessageBox.Show("入力制限(10バイト)")
e.Cancel = True
End If
End If
End Sub
' 1列目のみチェック
If e.ColIndex = 1 Then
Dim count As Integer
count = System.Text.Encoding.Default.GetByteCount _
(C1TrueDBGrid1.Columns(e.ColIndex).Value)
If count > 10 Then
MessageBox.Show("入力制限(10バイト)")
e.Cancel = True
End If
End If
End Sub
◎サンプルコード(C#)
private void c1TrueDBGrid1_BeforeColUpdate(object sender, C1.Win.C1TrueDBGrid.BeforeColUpdateEventArgs e)
{
// 1列目のみチェック
if (e.ColIndex == 1)
{
int count;
count = System.Text.Encoding.Default.GetByteCount
(c1TrueDBGrid1.Columns[e.ColIndex].Value.ToString());
if (count > 10)
{
MessageBox.Show("入力制限(10バイト)");
e.Cancel = true;
}
}
}
旧文書番号
69966