Аналогичные вопросы уже заданы (например, here), однако я не нашел ответа для своего конкретного случая. Я создаю настраиваемый элемент управления на основе элемента управления DevExpress, который по очереди основан на стандарте TextBox
, и у меня есть мерцающая проблема, которая возникает из-за базового компонента TextBox, который пытается обновить выбор.Предотвращение выбора текста в TextBox
Не объясняя все детали моего пользовательского элемента управления, чтобы воспроизвести проблему нужно просто поместить TextBox
внутри Form
, а затем использовать этот код:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
textBox1.MouseMove += TextBox1_MouseMove;
}
private void TextBox1_MouseMove(object sender, MouseEventArgs e) {
(sender as TextBox).Text = DateTime.Now.Ticks.ToString();
}
}
Если вы запустите его, вы нажимаете на TextBox
, а затем вы перемещаете курсор вправо, вы заметите мерцающую проблему (см. Видео here). Для моего пользовательского контроля мне нужно было бы избежать этого мерцания. Я обязан использовать TextBox
(так нет RichTextBox
). Есть идеи?
Вы хотите, чтобы избежать выбора вообще или вы хотите разрешить выбор, но он не должен мерцать при изменении текста? –
Я попробовал ваш пример, и после щелчка не мерцает. Это должно быть другое переопределение события, вы можете делиться другими событиями –
Из MSDN 'Будьте осторожны, когда вы пишете код для обработчика MouseMove. MouseMove будет часто возникать, когда пользователь взаимодействует с приложением или с конкретной областью объекта, которая имеет обработчик. Любой вычислительный или графически интенсивный код в обработчике MouseMove может потенциально представить заметное отставание в том, как рисует указатель мыши (или указатель стилуса) и как обычно работает приложение. «Я бы сказал, что это происходит, потому что он обновляется несколько раз во время перемещения мыши , –