天天看點

WinForm中TextBox的幾個基本技巧

1  一些常用屬性

            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事件不會被引發,如果焦點所前往的控件的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;//當輸入的值不符合要求時候,将不允許移出該控件

                errorProvider1.SetError(txtPhone, "");

        }最後注意一點:ErrorProvider這種控件很像是一種“擴充性提供者”。為什麼這樣說呢?當你把一個ErrorProvider控件拖到窗體上時,你會發現,原來窗體上的控件多出了三個屬性:errorProvider1 上的 Error、errorProvider1 上的 IconAlignment、errorProvider1 上的 IconPadding。像ErrorProvider這樣的控件還有ToolTip控件等,一旦你将一個ToolTip控件加入窗體後,窗體上的所有控件就會多出一個"toolTip1 上的ToolTip",以便讓你設定某個控件的工具提示資訊。

本文轉自terryli51CTO部落格,原文連結:http://blog.51cto.com/terryli/520625 ,如需轉載請自行聯系原作者

繼續閱讀