解決控制項中中英文混合輸入長度限制問題.

來源:互聯網
上載者:User

      源於"博問"上的一篇文章,很多時候我們的控制項需要限定字元輸入的MaxLength,但是遇到中英文混合的情況,對於長度的判定就有點複雜,現提供TextBoxBase繼承控制項的通用方法:

 

Code
 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;
            }
        }

 

轉載請註明原文地址:http://www.cnblogs.com/winzheng/archive/2009/03/04/1402721.html

  • 控制項最大字元長度即為資料庫欄位長度即可.
  • 在需要驗證長度的控制項的ValueChanged 事件上響應此方法即可.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.