您的位置:首页 > 其它

解决控件中中英文混合输入长度限制问题

2009-08-27 14:12 471 查看
很多时候我们的控件需要限定字符输入的MaxLength,但是遇到中英文混合的情况,对于长度的判定就有点复杂,现提供TextBoxBase继承控件的通用方法:

public static void OnTextBoxValueChanged(object sender, EventArgs e)
{
TextBoxBase txtbox = sender as TextBoxBase;
if (txtbox != null)
{
txtbox.TextChanged -= OnTextBoxValueChanged;
if (Encoding.Default.GetByteCount(txtbox.Text) >
txtbox.MaxLength && txtbox.Text.Length > 0)
{
string tmp = txtbox.Text.Substring(0,txtbox.Text.Length - 1);
while (Encoding.Default.GetByteCount(tmp) >txtbox.MaxLength && tmp.Length > 0)
{
tmp =tmp.Substring(0, tmp.Length - 1);
}
int start = txtbox.SelectionStart;
int length = txtbox.SelectionLength;
txtbox.Text = tmp;
txtbox.SelectionStart = start;
txtbox.SelectionLength = length;
}
txtbox.TextChanged += OnTextBoxValueChanged;
}
}


控件最大字符长度即为数据库字段长度即可.

在需要验证长度的控件的ValueChanged 事件上响应此方法即可.

原文地址
:/article/4922633.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐