Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TextBox + Enter, Ввод по нажатию клавиши 
:(
    Опции темы
Breezy
Дата 3.12.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 21.8.2003

Репутация: нет
Всего: 1



Добрый день форумчане.

Возникла такая проблемма: Хочу по нажатию "Enter" обрабатывать содержимое TextBox. Пока додумался обрабатывать нажатие клавиш... Но при этом при нажатии "Enter" возникает весьма не мелодичный звук. Можно ли избавиться от него?

Может есть другой способ как это сделать?
PM MAIL   Вверх
thomas
Дата 3.12.2006, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 1
Всего: 65



Цитата

Пока додумался обрабатывать нажатие клавиш...



Breezy,   и что сие означает?

Для обработки нажатия Enter нужно просто задать обработчик KeyPress для твоего TextBox-а и написать там условие:

Код

if e.KeyChar = vbCr then
       твой код
end if


А вообще недавно подобное обсуждалось. Неплохо бы юзать поиск по сайту.  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
DarkDragon
Дата 3.12.2006, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 3
Всего: 8



Цитата(Breezy @  3.12.2006,  13:11 Найти цитируемый пост)
Но при этом при нажатии "Enter" возникает весьма не мелодичный звук. Можно ли избавиться от него?

Проблема в том, что при установки Multiline = false, заприщается клавиша [Enter], чей символ, превращается в 13 + 10, т. е. CrLF (возврат каретки, новая строка, возможно только 10 символ!), и поэтому возникает такой звук(мелкософту спасибо). Вообщем ставишь мултилайн на действительно, при этом нужно добавить KeyPress событие.

Вот код:

Код

// Устанавливаем Multiline
txtbox.Multiline = true;

//   Обработчик события
    private void txtbox_keypress (object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == ControlChars.Cr)
        {
            // ТВОЙ КОД //
            e.Handle = true; // Это заблакирует нажатие Enter, и не вставит символы в содиржимое txtbox.
        }
    }

//Чтобы установить этот обработчик используй соедующий код:
    txtbox.KeyPress += new keyPressEventHandler (txtbox_keypress); // В методе InitalizeComponents или в конструкторе формы.


Все. Теперь нету ни звука, ни символа переноса строки.
PM MAIL   Вверх
ivashkanet
Дата 3.12.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



DarkDragon, точно, молодчина. А я-то думаю, какой такой звук  smile 
Эта тема уже поднималась, но нормального ответа я не увидел  smile 

Явный +1
PM MAIL WWW ICQ   Вверх
Breezy
Дата 3.12.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 21.8.2003

Репутация: нет
Всего: 1



DarkDragon

Проверил... Способ не без глюков ) Contrl+Enter... и не все становиться гладким (
PM MAIL   Вверх
Piphon
Дата 3.12.2006, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 30.3.2004
Где: Екатеринбург

Репутация: нет
Всего: 2



Лучше в событие KeyDown.

Код

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
  If e.KeyCode = Keys.Enter Then
    e.SuppressKeyPress = True
  End If
End Sub

Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
  If e.KeyCode = Keys.Enter Then
    ' Твой код
  End If
End Sub


Это сообщение отредактировал(а) Piphon - 3.12.2006, 23:07
--------------------
Non Progredi Est Regredi...
PM MAIL ICQ   Вверх
DarkDragon
Дата 4.12.2006, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 3
Всего: 8



Цитата(Piphon @  3.12.2006,  22:53 Найти цитируемый пост)
    e.SuppressKeyPress = True

В 2003 версии такого параметра нет. Это уже в 2005.

Цитата(Piphon @  3.12.2006,  22:53 Найти цитируемый пост)
Лучше в событие KeyDown.

Почему?

Цитата(Breezy @  3.12.2006,  22:17 Найти цитируемый пост)
Проверил... Способ не без глюков ) Contrl+Enter... и не все становиться гладким ( 

Почему это? smile  Все безглюков, если умеешь этим пользоваться!

Код

  if (e.KeyChar == 10) // Код возвращаемый при нажатии Ctrl + Enter
  {
    // ВСЕ ТО ЧТО БЫЛО В МОЕМ ПРИМЕРЕ.
  }

// Для того чтобы проверить какое значение пресылается от KeyPress, делай так:
  Debug.WriteLine (Convert.ToInt32 (e.KeyChar).ToString()); // И смотри какое значение(в Output окне).


Еще при использовании моего примера можешь нетрогать Multiline, он тама не играет значения.

PM MAIL   Вверх
Breezy
Дата 4.12.2006, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 21.8.2003

Репутация: нет
Всего: 1



DarkDragon
Я имелл в виду, что с мултилайном ещё надо и Copy/Past обрубать...
PM MAIL   Вверх
Piphon
Дата 4.12.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 30.3.2004
Где: Екатеринбург

Репутация: нет
Всего: 2



Цитата(DarkDragon @  4.12.2006,  12:02 Найти цитируемый пост)
Цитата(Piphon @  3.12.2006,  22:53 )
Лучше в событие KeyDown.

Почему?

KeyEventArgs куда более распространеный свойствами, чем KeyPressEventArgs. Хотя обработка нажатия клавиши разбивается на два события.
А KeyPress для обработки текстовых клавиш хорош, а нам надо обрабатывать ещё и спец. клавиши, так что я уж лучше буду знать где у меня Ctrl + Enter, чем буду вспоминать какойже символ вырабатывает нажатие этих клавиш. Нам ведь не надо стократное нажатие клавиш, только одно...

Цитата(DarkDragon @  4.12.2006,  12:02 Найти цитируемый пост)
В 2003 версии такого параметра нет. Это уже в 2005.

Ну он не указал версию ни студии, ни Framework'а.

Это сообщение отредактировал(а) Piphon - 4.12.2006, 10:28
--------------------
Non Progredi Est Regredi...
PM MAIL ICQ   Вверх
DarkDragon
Дата 4.12.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 3
Всего: 8



Цитата(Breezy @  4.12.2006,  10:24 Найти цитируемый пост)
DarkDragon
Я имелл в виду, что с мултилайном ещё надо и Copy/Past обрубать... 


Цитата(DarkDragon @  4.12.2006,  10:02 Найти цитируемый пост)
Еще при использовании моего примера можешь нетрогать Multiline, он тама не играет значения.


PM MAIL   Вверх
okaton
Дата 18.9.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Думаю многим пригодиться.
/Для того чтобы убрать звук при нажатии Enter в textBox  в обработчике KeyPress (textBox) написать e.Handled = true
Звук исчезнет!
PM MAIL   Вверх
iad
Дата 18.9.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 10.9.2007
Где: Москов

Репутация: нет
Всего: -2



Цитата(okaton @  18.9.2007,  18:48 Найти цитируемый пост)
в textBox  в обработчике KeyPress (textBox) написать e.Handled = true
на каждый текстбокс -жесть

Form1.KeyPreview=true;textBox1.Multiline=false;
Код

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Enter:
                    e.SuppressKeyPress = true;
                    System.Diagnostics.Debug.WriteLine(this.textBox1.Text);
                    System.Diagnostics.Debug.WriteLine(this.textBox2.Text);
                    System.Diagnostics.Debug.WriteLine(this.textBox*.Text);
                    break;
                default:
                    return;
            }
        }


PM MAIL   Вверх
Azzdorf
  Дата 20.1.2008, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Цитата(DarkDragon @ 4.12.2006,  10:48)
Цитата(DarkDragon @  4.12.2006,  10:02 Найти цитируемый пост)
Еще при использовании моего примера можешь нетрогать Multiline, он тама не играет значения.

Он тама играет значение, если роль идет о PasswordChar, так как при Multiline = true; PasswordChar всегда становиться пустым символом = '\0', ну это так кто столкнеться с ввидением пароля клавишей Enter smile 

DarkDragon - молодчина, классный пример smile 
--------------------
Иногда шаг вперед - это результат хорошего пинка под зад.
PM MAIL   Вверх
zmaximka
Дата 7.7.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 27.5.2006
Где: Украина, Одесса

Репутация: нет
Всего: нет



У моего ToolStripTextBox (TextBox на панели) нет свойства multiline! (( Как же мне убрать это звук при нажатии на энтер? 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.1045 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.