Звук "дин" Windows играет при использовании Ctrl + A в текстовом поле (C #) - PullRequest
2 голосов
/ 11 марта 2011

Было достаточно легко создать текстовое поле, поддерживающее «ctrl + A» (выбрать все), прослушивая событие KeyDown текстового поля для нажатия клавиши «A», когда Control установлен в True.Когда это условие выполнено, текстовое поле выполняет вызов, подобный этому:

textBox1.Select(0, textBox1.Text.Length);
textBox1.ScrollToCaret();

Функциональность «выбрать все» работает достаточно хорошо, за исключением того, что я слышу звук «дин» Windows, когда я на самом деле набираю ctrl +А в мое текстовое поле, когда я использую приложение.Я не могу понять, почему.

Ответы [ 2 ]

3 голосов
/ 11 марта 2011

По крайней мере, на Windows XP SP3 с Windows Forms , то же самое происходит со мной (это действительно раздражает).

Звучит "динь"даже без каких-либо обработчиков событий.Многострочные и другие настройки (предварительный просмотр, клавиши ввода и т. Д.) Также не действуют.

Я использую этот обработчик событий, чтобы избавиться от него:

public static void TextBoxSelectAll(object sender, KeyEventArgs e)
{
    if (e.KeyData == (Keys.Control | Keys.A))
    {
        ((TextBox)sender).SelectAll();

        e.SuppressKeyPress = true;
        e.Handled = true;
    }
}
0 голосов
/ 11 марта 2011

Звук дин указывает на то, что произошла ошибка, поэтому я предполагаю, что эта строка кода является причиной проблемы:

textBox1.Select(0, textBox1.Text.Length);

Поскольку счетчик 0, вы действительно хотите прокрутитьдо textBox1.Text.Length - 1.(Однако я немного догадываюсь. И, как сказал Даниэль, эта функциональность уже встроена ... нет необходимости ее реализовывать!)

Редактировать - Проблема(как описано здесь ) происходит, когда текстовые поля находятся в многострочном режиме.Перейдите по ссылке, чтобы исправить проблему.

...