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, "");
}
}
最 后注意一點:ErrorProvider這種控件很像是一種“擴展性提供者”。為什么這樣說呢?當你把一個ErrorProvider控件拖到窗體上時, 你會發現,原來窗體上的控件多出了三個屬性:errorProvider1 上的 Error、errorProvider1 上的 IconAlignment、errorProvider1 上的 IconPadding。像ErrorProvider這樣的控件還有ToolTip控件等,一旦你將一個ToolTip控件加入窗體后,窗體上的所有控 件就會多出一個"toolTip1 上的ToolTip",以便讓你設定某個控件的工具提示信息。
