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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> textBoxS_KeyPress, Один обработчик для нескольких textBoxов 
V
    Опции темы
C4EBA
Дата 31.5.2010, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

        private void textBoxS_KeyPress(object sender, KeyPressEventArgs e)
      {
        if (e.KeyChar==',')
        {
        e.KeyChar='.';
        }
        if (!Char.IsDigit(e.KeyChar)&&e.KeyChar!=(char)Keys.Back)
        {
          if (e.KeyChar!='.'||textBoxS.Text.IndexOf(".")!=-1)
          {
            e.Handled=true;
          }
        }
      }


Без строчки  
Код

if (e.KeyChar!='.'||textBoxS.Text.IndexOf(".")!=-1)


которая запрещает вводить больше одной точки, код  для textBoxS_KeyPress можно было использовать для нескольких textBox-ов. А с этой строчкой его нужно писать для каждого textBox-а.
Нельзя ли как-то по другому запретить введение больше одной точки, чтобы код не содержал указание на конкретный textBox?




PM   Вверх
NightmareZ
Дата 31.5.2010, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(C4EBA @  31.5.2010,  17:55 Найти цитируемый пост)
Нельзя ли как-то по другому запретить введение больше одной точки, чтобы код не содержал указание на конкретный textBox?


А этот код и не привязан к конкретному TextBox'у. Просто назначь это событие всем нужным TextBox'ам.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
C4EBA
Дата 1.6.2010, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(NightmareZ @  31.5.2010,  20:50 Найти цитируемый пост)
 Просто назначь это событие всем нужным TextBox'ам.


Вначале я так и сделал. Но когда, проверяя работу программы, вводил в textBoxS число с десятичным разделителем, то в другие textBox-ы ввести числа с десятичным разделителем не удавалось. Удалял точку из textBoxS - можно было ввести в любой другой textBox точку.
Когда переписал код для каждого textBox-а - все заработало.

Цитата(NightmareZ @  31.5.2010,  20:50 Найти цитируемый пост)
А этот код и не привязан к конкретному TextBox'у. 


Как же не привязан? textBoxS.Text.IndexOf(.... - ведь тут конкретно указано: textBox с именем S.
А у меня есть textBoxD, textBoxL, textBoxP и другие.
PM   Вверх
A5uKa
Дата 1.6.2010, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



sender
PM   Вверх
C4EBA
Дата 1.6.2010, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(A5uKa @  1.6.2010,  09:04 Найти цитируемый пост)
sender

A5uKa, а нельзя ли поподробнее? Как должен выглядеть код, который я привел в своем первом сообщении? Что и как в нем нужно изменить? 
PM   Вверх
A5uKa
Дата 1.6.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



Цитата

Как же не привязан? textBoxS.Text.IndexOf(.... - ведь тут конкретно указано: textBox с именем S.


Код

((TextBox)sender).Text.IndexOf(

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


Шустрый
*


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

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



Спасибо, A5uKa. Попробовал, как ты предлагаешь - работает.
Привожу исправленный код с пояснениями:

Код

        private void textBoxS_KeyPress(object sender, KeyPressEventArgs e)
      {
// если вводят запятую - она меняется на точку:
        if (e.KeyChar==',')
        {
        e.KeyChar='.';
        }
// разрешается ввод только цифр и БэкСпейс:
        if (!Char.IsDigit(e.KeyChar)&&e.KeyChar!=(char)Keys.Back)
        {
// запрет на ввод более одной десятичной точки:
          if(e.KeyChar != '.' || ((TextBox)sender).Text.IndexOf(".") != -1)
           {
            e.Handled=true;
          }
        }
      }

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


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



^__^
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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