1 / 1 / 0
Регистрация: 16.07.2009
Сообщений: 8
1

Определение позиции курсора в TextBox'e

23.11.2009, 13:06. Показов 16569. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!

Подскажите как определить текушую позицию курсора в TextBox'e?

Собственно мне нужно знать какой (предыдущий) символ стоит перед курсором (чтобы разрешить или запретить ввод '-')

я делаю так:

C#
1
 if (textBox1.Text.ToUpper().LastIndexOf('E') == this.textBox1.TextLength-1)
но думаю это туповато,

и работает только при вводе новой строки, при смещении курсора все накрывается

Прошу помощи
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2009, 13:06
Ответы с готовыми решениями:

Определение позиции курсора на экране (не на форме)
Привет! я обрабатываю перемещение по графику функции, нарисованном на PictureBox'е формы, и хочу...

Определение позиции курсора
Здравствуйте! Задание следующего характера: написать фрагмент программы, реализующий задание:...

Определение позиции курсора
Скажите какие функции использовать для того чтобы получить данную позицию курсора. Например нужны...

TMemo определение позиции курсора
Здравствуйте столкнулся с такой проблемой мне требуется определить позицию в Memo на которой...

6
2096 / 1261 / 171
Регистрация: 01.02.2009
Сообщений: 2,842
23.11.2009, 13:23 2
У textBox'a есть свойство SelectionStart.
3
1 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 4
20.10.2013, 16:13 3
Код позволяет фильтровать ввод символов, для формирования положительного/отрицательного числа double.
В качестве разделителя дробной части используются символы "." или ","
Но код не позволяет фильтровать paste в textBox:

C#
1
2
3
4
5
6
7
private void textBox2_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            if (!Char.IsDigit(e.Text, 0) && ((e.Text.Substring(0, 1) != "-") || (textBox2.Text.IndexOf("-") == 0) || textBox2.SelectionStart != 0) &&
                ((e.Text.Substring(0, 1) != ".") || (textBox2.Text.IndexOf(".") != -1) || (textBox2.SelectionStart == 0) || (!Char.IsDigit(textBox2.Text.Substring(textBox2.SelectionStart - 1, 1), 0)) || ((textBox2.Text.IndexOf(",") != -1))) && 
                ((e.Text.Substring(0, 1) != ",") || (textBox2.Text.IndexOf(",") != -1) || (textBox2.SelectionStart == 0) || (!Char.IsDigit(textBox2.Text.Substring(textBox2.SelectionStart - 1, 1), 0)) || ((textBox2.Text.IndexOf(".") != -1))) )
                    e.Handled = true;
        }
Добавлено через 2 часа 0 минут
Цитата Сообщение от Phantom333 Посмотреть сообщение
Код позволяет фильтровать ввод символов, для формирования положительного/отрицательного числа double.
Доработанный вариант - можно использовать один обработчик события для нескольких textBox:
C#
1
2
3
4
5
6
7
8
private void textBox2_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            TextBox thisTextBox = (sender as TextBox);
            if (!Char.IsDigit(e.Text, 0) && ((e.Text.Substring(0, 1) != "-") || (thisTextBox.Text.IndexOf("-") == 0) || thisTextBox.SelectionStart != 0) &&
                ((e.Text.Substring(0, 1) != ".") || (thisTextBox.Text.IndexOf(".") != -1) || (thisTextBox.SelectionStart == 0) || (!Char.IsDigit(thisTextBox.Text.Substring(thisTextBox.SelectionStart - 1, 1), 0)) || ((thisTextBox.Text.IndexOf(",") != -1))) && 
                ((e.Text.Substring(0, 1) != ",") || (thisTextBox.Text.IndexOf(",") != -1) || (thisTextBox.SelectionStart == 0) || (!Char.IsDigit(thisTextBox.Text.Substring(thisTextBox.SelectionStart - 1, 1), 0)) || ((thisTextBox.Text.IndexOf(".") != -1))) )
                    e.Handled = true;
        }
0
nio
21.10.2013, 13:55
  #4

Не по теме:

Вот ТС обрадуется - три года ожидания не прошли даром :D

0
3 / 3 / 1
Регистрация: 04.02.2014
Сообщений: 69
02.05.2014, 19:47 5
мой компилятор и не знаем что это за параметр "TextCompositionEventArgs" и к какому событию в данном случае нужно привязать эту замечательную функцию textBox2_PreviewTextInput. Помогите Христа ради.
0
1156 / 879 / 512
Регистрация: 09.04.2014
Сообщений: 2,082
03.05.2014, 19:36 6
Цитата Сообщение от good soul Посмотреть сообщение
мой компилятор и не знаем что это за параметр "TextCompositionEventArgs" и к какому событию в данном случае нужно привязать эту замечательную функцию textBox2_PreviewTextInput. Помогите Христа ради.
Это для WPF, а не WindowsForms
1
1 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 4
02.07.2014, 09:48 7
Неужели так сложно адаптировать код под WindowsForms?
C#
1
2
3
4
5
6
7
8
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    TextBox thisTextBox = (sender as TextBox);
    if (!Char.IsDigit(e.KeyChar) && (e.KeyChar != 8) && ((e.KeyChar != '-') || (thisTextBox.Text.IndexOf("-") == 0) || thisTextBox.SelectionStart != 0) &&
        ((e.KeyChar != '.') || (thisTextBox.Text.IndexOf(".") != -1) || (thisTextBox.SelectionStart == 0) || (!Char.IsDigit(thisTextBox.Text.Substring(thisTextBox.SelectionStart - 1, 1), 0)) || ((thisTextBox.Text.IndexOf(",") != -1))) &&
        ((e.KeyChar != ',') || (thisTextBox.Text.IndexOf(",") != -1) || (thisTextBox.SelectionStart == 0) || (!Char.IsDigit(thisTextBox.Text.Substring(thisTextBox.SelectionStart - 1, 1), 0)) || ((thisTextBox.Text.IndexOf(".") != -1))))
        e.Handled = true;
}
Только при преобразовании значения TextBox'а в число нужно учитывать, что данный код в качестве разделителя дробной позволяет вводить либо запятую, либо точку.
0
02.07.2014, 09:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2014, 09:48
Помогаю со студенческими работами здесь

Определение позиции курсора в TextArea
Как на JAvaScript опрелеить позицию курсора в текстареа?? Заранее спасиба!

Определение позиции курсора в поле
Подскажите., можно как-н определить позицию курсора в поле, чтобы при нажатии на какую-н кнопку...

Определение позиции курсора относительно элемента
Подскажите пожалуйста, допустим есть выпадающий список ul li, открывающийся при наведении курсора...

SDL: определение позиции курсора мыши
Товарищи, как в SDL определить позицию курсора мыши? Прочитал на вики, что есть ф-я...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru