asp.net中WinForm中TextBox的幾個基本技巧

來源:互聯網
上載者:User

1  一些常用屬性

 代碼如下 複製代碼
this.textBox5.PasswordChar = '@';  //密碼的樣式
            this.textBox5.UseSystemPasswordChar = true; //如果這個屬性為true,則密碼就和系統預設的密碼樣式相同,而PasswordChar屬性不起作用.
            this.textBox5.Multiline = true;   //多行顯示
            this.textBox5.WordWrap = true;  //自動換行
            this.textBox5.ScrollBars = ScrollBars.Vertical; //顯示垂直捲軸。ScrollBars的枚舉值之一。
            this.textBox5.MaxLength = 100;//在文字框中輸入的最大字元數。

2  實現自動完成功能,提高使用者體驗

想實現自動完成,就必須明白三個屬性:

       AutoCompleteSource屬性: 設定自動完成的來源。此屬性的值為AutoCompleteSource枚舉值之一

       AutoCompleteMode屬性:設定自動完成的顯示模式。此屬性的值為AutoCompleteMode枚舉值之一

       AutoCompleteCustomSource屬性:自訂完成來源。當AutoCompleteSource屬性值為CustomSource時,此

      屬性才起做用。屬性值為AutoCompleteStringCollection集合對象,可以通過AutoCompleteCustomSource屬性

      這個集合。

      可以通過直接屬性值來實現自動完成,也可以用代碼實現,用代碼如下:

 代碼如下 複製代碼

 AutoCompleteStringCollection myCutomSource = new AutoCompleteStringCollection();
            myCutomSource.AddRange(new string[]{"成都市東門","成都市北門","成都市西門","成都市南門"});
            this.textBox5.AutoCompleteSource = AutoCompleteSource.CustomSource;
            this.textBox5.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            this.textBox5.AutoCompleteCustomSource = myCutomSource;

3  TextBox控制項中的字元在輸入同時立即轉換為大寫或小寫

方法一:通過CharacterCasing屬性來實現。此屬性預設的值為Normal,意思是字元的大小寫不會改變。還有2個屬性值:Upper和Lower。

方法二:通過TextBox的KeyPress事件實現

 代碼如下 複製代碼

 private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (char.IsLower(e.KeyChar))
            {
                textBox3.SelectedText = char.ToUpper(e.KeyChar).ToString();
                e.Handled = true;
            }
        }

4  驗證使用者輸入,增加使用者體驗

    基本的思路是:首先,使用控制項的Validating事件來驗證使用者的輸入。其次,當輸入值不符合要求時,用ErrorProvider控制項通知使用者或者 用MessageBox以彈出對話方塊的形式通知使用者。顯然用RrrorProvider控制項通知使用者更具使用者體驗性。

注意:只有當控制項的 CauseValidation屬性被設定為True(此為預設值)時,才會引發Validating事件。同時必須知道Validating事件會在控 件失去焦點之前引發。Validating事件會提供 CancelEventArgs參數,可以讓你通過設定其Cancel屬性來告知該控制項中的資料是 否有效,如果你把Cancel屬性設定為True(表示控制項中的資料無效),則焦點會保持在資料無效的控制項上;如果你把Cancel屬性保持預設值 False(表示控制項中的資料有效),則接下來會引發Validated事件,而且焦點也會轉移到新的控制項上去。

注意:焦點所前往的控制項的CauseValidation屬性的設定值也會決定焦點原先所在控制項的Validating事件是否要被引發。如果焦點所前往的控制項的CauseValidation屬性的值為False,則焦點原先所在控制項的Validating事件

"#ff0000">不會被引發,如果焦點所前往的控制項的CauseValidation屬性的值為True,則焦點原先所在控制項的Validating事件會被引發。這樣的好處是增加了靈活性而且也不會遺漏任何驗證操作。此外只要表單中任何一個控制項的輸入值無法通過Validating事件的驗證條件,則表單將無法關閉。

一個例子:

 代碼如下 複製代碼

//必須要從工具箱組件中把ErrorProvider控制項拖到表單上,不管眼驗證多少控制項,只需要一個ErrorProvider控制項就OK了
private void txtUserName_Validating(object sender, CancelEventArgs e)
        {
            if (this.txtUserName.Text == string.Empty)
            {
                errorProvider1.SetError(txtUserName, "姓名不可為空!");
                e.Cancel = true;
            }
            else
            {
                errorProvider1.SetError(txtUserName, "");
            }

另一個例子:

 代碼如下 複製代碼

 private void txtPhone_Validating(object sender, CancelEventArgs e)
        {
            Regex re = new Regex(@"^(d{3})d{4}d{4}$");
            if (!re.IsMatch(txtPhone.Text))
            {
                errorProvider1.SetError(txtPhone, "電話號碼必須符合(xxx) xxxx xxx 的格式。");
                e.Cancel = true;//當輸入的值不符合要求時候,將不允許移出該控制項
            }
            else
            {
                errorProvider1.SetError(txtPhone, "");
            }
        }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.