2011-08-30 57 views
1

我的用户可以在组合框中输入一些文本,但我希望这个文本自动以大写字母显示(就像用户有大写锁定一样)。任何想法如何做到这一点?c#窗体大写字母

回答

6

您将需要处理KeyPress事件。

private void ComboBox_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (e.KeyChar >= 'a' && e.KeyChar <= 'z') 
     e.KeyChar -= (char)32; 
} 

32只是小写字母和大写字母之间ASCII值的区别。

+0

我觉得KeyChar是只读的,对于ComboBox ... –

+0

@Edwin,没有 - KeyPressEventArgs既有getter和setter。 – Marlon

+0

设置KeyChar从.NET 2.0开始有效 – Patrik

1

您可以注册到TextChanged事件并将文本转换为大写。

private void combobox_TextChanged(object sender, EventArgs e) 
{ 
    string upper = combobox.Text.ToUpper(); 
    if(upper != combobox.Text) 
     combobox.Text = upper; 
} 
1

另一个例子

private void TextBox_Validated(object sender, EventArgs e) 
    { 
     this.TextBox.Text = this.TextBox.Text.ToUpper(); 
    } 

问候

0

这是我如何处理它,它比简单地更换整个文本更加平滑变化。

private void ComboBox_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (Char.IsLetter(e.KeyChar)) 
    { 
    int p = this.SelectionStart; 
    this.Text = this.Text.Insert(this.SelectionStart, Char.ToUpper(e.KeyChar).ToString()); 
    this.SelectionStart = p + 1; 
    } 
}