开发者

c# windows forms capital letters

开发者 https://www.devze.com 2023-04-01 01:29 出处:网络
My user can enter some text into the combobox but I wish that this text is automatically shown in capital letters (as if user had capslock on). Any 开发者_开发知识库ideas how to do this?You will want

My user can enter some text into the combobox but I wish that this text is automatically shown in capital letters (as if user had capslock on). Any 开发者_开发知识库ideas how to do this?


You will want to handle the KeyPress event.

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

32 is just the difference in ASCII values between lowercase and uppercase letters.


Here is how I handled it, it gives a much smoother change than simply replacing the whole text.

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;
  }
}


another example

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

Regards


You can register to the TextChanged event and convert the text to capitals.

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

精彩评论

暂无评论...
验证码 换一张
取 消