2012-04-11 4 views
18

У меня есть текстовое поле в приложении для Windows. Он позволяет использовать только алфавиты и цифры. Я хочу, когда когда-либо набираю какой-либо алфавит, он должен быть преобразован в верхний регистр. Как я могу это сделать и в каком случае? Я использовал str.ToUpper(), но курсор смещается в начало строки. Пожалуйста, дайте мне решение.Как преобразовать строку в верхний регистр в текстовое поле Windows?

ответ

52

Вам просто нужно изменить CharacterChasing недвижимость до Upper.

textBox1.CharacterCasing = CharacterCasing.Upper 
+2

+1, это более уместно. – ABH

+1

@Ferhad благодарит много. – Sukanya

7

Вам необходимо присвоить результаты ToUpper обратно в текстовое поле:

txtBox.Text = txtBox.Text.ToUpper(); 

В качестве альтернативы, установите CharacterCasing свойство текстового поля в Upper:

txtBox.CharacterCasing = CharacterCasing.Upper; 
+0

нет, делать это в KeyDown или нажатием клавиши или KeyUp события сдвигает курсор на нулевой позиции в текстовом поле, как я уже упоминал в моем вопросе. – Sukanya

+0

@ Суканя - Действительно. Вот почему вы не должны этого делать на этих обработчиках событий.Вы можете сделать это в обработчике событий «LostFocus», но нужно быть осторожным, но лучшим решением является просто установить свойство «CharacterCasing». – Oded

2

Попытайтесь использовать событие KeyPress, и обработчик должен быть похож на следующее:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
     { 
      e.KeyChar= (e.KeyChar.ToString()).ToUpper().ToCharArray()[0]; 
     } 
0

Возможно, вам необходимо использовать событие: TextBox1_EditValueChanging.

Если каждый раз, когда курсор перемещается в первой позиции, вы можете рассчитать количество символов в вашем txt и сдвинуть курсор после последнего символа.

0
private void mytextbox_KeyPress(object sender, KeyPressEventArgs e) 

{ 

e.KeyChar = Char.ToUpper(e.KeyChar); 

} 
+0

это только для чтения. – Tommix

1

В свойствах TextBox просто установите CharacterCasing в Upper. Он преобразует весь введенный символ в верхний регистр.

0
  1. TxtInput // Это пользователь вводит текстовое поле
  2. LblLengthstrong // Этикетка, чтобы показать длину
  3. LblUpper // Метка, которая показывает его в верхнем регистре
  4. LblLower // Этикетка показывает, что в нижнем регистре
  5. LblRight // Метка, которая показывает показывает последние 3 символов
  6. LblSubscript // Метка, которая показывает символы с 1 по 3

// показать длина всех символов занесены

private void BtnLength_Click(object sender, EventArgs e) 
     { 
      LblLength.Text = TxtInput.Text.Length.ToString(); 
     } 

// сделать персонажам верхней

private void btnUpper_Click(object sender, EventArgs e) 
     { 
      LblUpper.Text = TxtInput.Text.ToUpper(); 
     } 

// сделать символы в нижнем регистре

private void BtnLower_Click(object sender, EventArgs e) 
     { 
      LblLower.Text = TxtInput.Text.ToLower(); 
     } 

// показать последние 3 символа

private void BtnRight_Click(object sender, EventArgs e) 
     { 
      LblRight.Text = TxtInput.Text.Substring(TxtInput.Text.Length - 3); 
     } 

// показать символы в позиции 1 через 3

private void BtnSubscript_Click(object sender, EventArgs e) 
     { 
      LblSubscript.Text = TxtInput.Text.Substring(1, 3); 
     } 

// ASCII

private void BtnGo_Click(object sender, EventArgs e) 
     { 
      string name; 
      int letter; 

      name = TxtInput.Text; 

      for (int index = 0; index < name.Length; index++) 
      { 
       letter = name[index]; 
       MessageBox.Show(letter.ToString()); 
      } 
     } 

// Пароль

 int InNumTry = 0; 
    private void BtnGo_Click_1(object sender, EventArgs e) 
    { 
     string password; 
     password = TxtIn.Text; 

      switch (password) 
      { 
       case " ": MessageBox.Show("Passowrd is empty."); 
        break; 

       case "MIKE": MessageBox.Show("Password is OK!"); 
        FrmBOO newForm = new FrmBOO(); 
        newForm.Show(); 
        break; 

       default: 
        InNumTry++; 
        MessageBox.Show("Invalid Passwrod, try again!"); 
        TxtIn.Text = ""; 
        TxtIn.Focus(); 
        break; 
      } 

      if (InNumTry >= 3) 
      { 
       MessageBox.Show("You have tried too many times, have a good day."); 
       TxtIn.Enabled = false; 
      } 
     } 

// Добавление таймера (в таймере добавить код под этим (Добавить add timer1.Start(); в форме запуска)

private void timer1_Tick(object sender, EventArgs e) 
     { 
      DateTime datetime = DateTime.Now; 
      this.LblTime.Text = datetime.ToString(); 
     } 
+3

Ответ слишком длинный и может смутить парня, который спрашивает. Вопрос действительно ясен и запрашивает только событие для обработки. – innoSPG

+1

Ленивые люди даже не читают его. – C4u

0

правой кнопкой мыши на TextBox в конструкторе, под изменение свойств CharacterCasing к Верхним.

7

Зачем изобретать колесо, просто установите свойство CharacterCasing для textBox на «Верхний». Вам не нужно писать какой-либо код.

Make letters in textBox uppercase

В случае замаскированного текстового поля, вы можете использовать «>» (в маске собственности), чтобы сделать следующие символы в верхнем регистре. например Для ввода буквенно-цифровой строки (A-Z, 0-9) длиной восемь используйте маску '> AAAAAAAA'. Чтобы ограничить только буквы (A-Z), используйте '> LLLLLLLL'.

Make letters in maskedTextBox uppercase

+0

Это лучший способ ... CHEEERS !!! –

+0

Это должен быть принятый ответ! – henrikmerlander

+0

Это должен быть лучший ответ! – Jim

Смежные вопросы