Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/179: Рейтинг темы: голосов - 179, средняя оценка - 4.53
 Аватар для corlovito
461 / 442 / 75
Регистрация: 26.12.2012
Сообщений: 2,888

Метод String.IndexOf

19.02.2013, 11:16. Показов 33834. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разбираюсь в следующем коде, в коде представлен обработчик события нажатия клавиши в textBox т,е проверяется условие чтобы нажимались только цифры и запятая два раза не была введена, т.к нужно ввести либо целое число либо дробное. Впринципе код мне понятен не могу до конца разобраться в строчке номер 27, где проходит проверка есть запятая или нет.
- ВОПРОС: что значит вот этот текст !=-1 про метод String.IndexOf я почитал в данном случае он возвращает индекс первого вхождения указанного знака Юникода в данной строке. Получается дословно здесь говорится если не равен минус один, как понимать это не равен минус один?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// нажатие клавиши в поле редактирования
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            // Правильными символами считаются цифры,
            // запятая, <Enter> и <Backspace>.
            // Будем считатьать правильным символом
            // также точку, на заменим ее запятой.
            // Остальные символы запрещены.
            // Чтобы запрещенный символ не отображался 
            // в поле редактирования,присвоим 
            // значение true свойству Handled параметра e
 
            if ((e.KeyChar >= '0') && (e.KeyChar <= '9'))
            {
                // цифра
                return;
            }
 
            if (e.KeyChar == '.')
            {
                // точку заменим запятой
                e.KeyChar = ',';
            }
 
            if (e.KeyChar == ',')
            {
                if (textBox1.Text.IndexOf(',') != -1)
                {
                    // запятая уже есть в поле редактирования
                    e.Handled = true;
                }
                return;
            }
 
            if (  Char.IsControl (e.KeyChar) )
            {
                // <Enter>, <Backspace>, <Esc>
                if ( e.KeyChar == (char) Keys.Enter)
                    // нажата клавиша <Enter>
                    // установить курсор на кнопку OK
                    button1.Focus(); 
                return;
            }
 
            // остальные символы запрещены
            e.Handled = true;
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2013, 11:16
Ответы с готовыми решениями:

Метод String.IndexOf
Ребята, подскажите почему этот метод находит не целое слово, а пытается корень слова найти. Два условия. пишу слово занят, а он не находит...

String.IndexOf
Господа, объясните пжлст что это за зверь String.IndexOf и что такое подстрока ибо я прочитал и в шилдте и в гугле и в мсдн и так ничего не...

Метод IndexOf
Нужно реализовать поиск значения в неотсортированном списке с помощью этого метода. Делаю так: BindingList&lt;D1&gt; bl1 = new...

2
 Аватар для buntar
543 / 544 / 181
Регистрация: 16.03.2012
Сообщений: 1,160
Записей в блоге: 2
19.02.2013, 11:26
Цитата Сообщение от corlovito Посмотреть сообщение
if (textBox1.Text.IndexOf(',') != -1)
Цитата Сообщение от corlovito Посмотреть сообщение
ВОПРОС: что значит вот этот текст !=-1 про метод String.IndexOf
String.IndexOf возвращает целочисленное значение - индекс первого вхождения символа в строку. Если искомого символа нет в строке - метод String.IndexOf возвращает в качестве значения -1(минус 1).
В вашем случае это значит, что если выполняется if (textBox1.Text.IndexOf(',') != -1), то во входной строке имеется запятая.

P.S.
Скомпилируйте этот кусочек кода,и посмотрите что будет
C#
1
2
3
4
5
public static void Main()
{
    string a = "abcd";
    Console.WriteLine(a.IndexOf('e'));
}
1
 Аватар для corlovito
461 / 442 / 75
Регистрация: 26.12.2012
Сообщений: 2,888
19.02.2013, 14:44  [ТС]
ок спасибо, есть еще непонимание вот этого куска кода
C#
1
e.Handled = true;
почитал про Handled что Если событие не обработано, оно будет отправлено для обработки по умолчанию операционной системой.Задайте свойству Handled значение true, чтобы отменить событие KeyPress. т.е правильно ли я понял что данный код не дает нам больше что либо вводить ? или же он здесь другую роль выполняет

Добавлено через 2 часа 52 минуты
почитал про свойство Handled, правильно ли я понял что в случае когда его значение TRUE, происходит отмена события KeyPress, другими словами отменяется нажатие на кнопку?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2013, 14:44
Помогаю со студенческими работами здесь

Вывод Enum в метод String
я новичек так сказать, учу сам, поэтому банальный вопрос как сделать вывод через метод String, поля Enum Days. выделю место где не знаю...

Метод расширения .Select для string
Как можно заменить выделенную мною часть сообщения без этого &quot;.Select&quot; ? Не могу понять каким образом так можно сделать, извините, если...

Объясните как работает метод Any у String
Доброго времени суток. Ни как не могу понять как работает метод Any в классе String .Пытался читать справку на MSDN , там весьма скудно с...

Метод для очистки string-переменной от ненужных символов
Друзья, помогите придумать работающий метод. Что имеем В переменной string хранится некое количество неких знаков. Знаки могут...

Как правильно нужно вызывать метод с аргументом string[] args?
Всем привет, кто подскажет как можно вызывать метод для выполнения... Пример кода: public static void SendMessage(string args) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru