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, ""); } } |