Для текстового окна Winforms, когда вы нажимаете и перетаскиваете текст, он выделяет его. Есть ли способ определить, в каком направлении пользователь перетащил?Выделение текста в текстовом поле Winforms
-1
A
ответ
2
Невозможно получить эту информацию с помощью API выбора TextBox Windows. Например, сообщение EM_GETSEL
определяет начальную и конечную позиции символа выделения, но в предопределенном (отсортированном) порядке.
Однако вы можете получить эту информацию, обратившись к событию управления MouseMove
. Например:
textBox1.MouseMove += new MouseEventHandler(textBox1_MouseMove);
void textBox1_MouseMove(object sender, MouseEventArgs e)
{
Control tbCtrl = sender as Control;
// the mouse coordinate values here are relative to the coordinates of the control that raised the event
int mouseX = e.X;
...
}
, применяя некоторую логику mouseX
потенциально вы можете обнаружить среднее направление курсор движется. Это будет работать лучше всего, если пользователь делает линейное движение. Вы также можете обрабатывать событие drag-and-drop текстового поля для аналогичной информации о мыши, если вы хотите, чтобы событие было поднято, когда пользователь перетаскивал мышь.