Как снять выделение с текста со списком

У меня есть поле со списком криптонов, с которым я связываю данные со списком пар ключ-значение. Что происходит, когда я устанавливаю выделенный элемент в коде, он выделяет текст. Как я могу предотвратить это или отменить выбор текста?

Я пробовал следующее:

// 1
combo.Select(0,0);
// 2
combo.Focus();
anotherControl.Focus();
// 3
combo.SelectionStart = 0;
combo.SelectionLength = combo.Text.Length;
// 4 
combo.SelectionStart = combo.Text.Length;
combo.SelectionLength = 0;

Ничто не работает. Любая помощь приветствуется.

16

12 ответы

Мне удалось выполнить это, чтобы переопределить событие OnPaint моего элемента управления/окна и сделать

combobox1.SelectionLength = 0;
6
добавлено
Выполняя это, я не могу выделить текст позже. Его получение отменяется каждый раз, потому что метод OnPaint вызывается часто
добавлено автор Martin Fernau, источник

Возможно, я нашел решение, которое работает:

Если вы используете форму, подпишитесь на событие Shown формы.

<�Сильный> ИЛИ </сильный>

Если вы используете UserControl (например, я), вы можете подписаться на событие VisibleChanged.

В этом случае вы можете сделать следующее:

        foreach (ComboBox cbo in (this.Controls.Cast().Where(c => c is ComboBox).Select(c => (ComboBox) c)))
        {
            cbo.SelectionLength = 0;
        }

Как в сторону:

Мне пришлось сделать это для пользовательского элемента управления, в котором я добавил ComboBoxes в элемент управления, а затем для более быстрого динамического задания их размера. Установка размера вызвала выделение, с которым столкнулся ОП.

3
добавлено
Это сработало и для меня. большой
добавлено автор Martin Fernau, источник

Попробуйте это

combo.SelectedText = String.Empty;

Что касается вашей проблемы с фокусом: ( MSDN )

Когда поле со списком теряет фокус, точка выбора перемещается в   начало текста, и любой выделенный текст становится недоступным

Так странно; почему следующее не сработало:

anotherControl.Focus(); 
2
добавлено
Не работайте. Возможно, этот ответ актуальен для старого C #.
добавлено автор Gurebu Bokofu, источник
Спасибо, но не работает
добавлено автор MattBH, источник
это странно, когда я нажимаю на него после его загрузки, а затем нажимаю на что-то еще, тогда эта функция фокуса работает! ??! это сводит меня с ума
добавлено автор MattBH, источник
он связан, но затем я выбираю элемент из списка. Это в основном форма, которая предварительно добавляется из db, поэтому мне нужно выбрать правильный элемент.
добавлено автор MattBH, источник
ваш combobox привязан к некоторому источнику данных? Если да, попробуйте SelectedIndex = -1
добавлено автор sll, источник

Мне все равно, сколько ему лет. Мы строим базу знаний.

Я использую D5 (и, возможно, предыдущие версии совпадают). Вам необходимо использовать:

Combobox.SelLength :=  0; 

Кроме того, если это не работает, выполните следующие действия: Избегайте стиля по умолчанию (csDropDown).   И установите его так:

Combobox.Style := csDropDownList; 

как предложил Алекс.

Спасибо. Прекрасно работает!

1
добавлено
D5? Вы имеете в виду Delphi? В вопросе [C #] с тегами?
добавлено автор jean, источник
Простите меня, но синтаксис, который вы здесь показали, совсем не похож на C #.
добавлено автор kayess, источник

Вот что я делаю:

private void faceComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
     this.ActiveControl = cancelButton;
}
0
добавлено
this.ActiveControl = null; также работает.
добавлено автор Alden, источник

В событии SelectedIndexChanged добавьте таймер, который будет выполняться только один раз через 10 миллисекунд.

new System.Threading.Timer((s) =>
            {
                comboBox1.Invoke(new Action(() =>
                {
                    comboBox1.Select(0, 0);
                }));
            }, null, 10, System.Threading.Timeout.Infinite);
0
добавлено

Я знаю, что прошло некоторое время с тех пор, как вы задали этот вопрос. Но вот что вы можете сделать

combo.selectedindex = -1;
0
добавлено
Спасибо, но я не пытаюсь изменить выбранный элемент, я просто хочу выделить текст.
добавлено автор MattBH, источник

Вы не указали, должен ли пользователь редактировать значения ComboBox или нет. Если нет, то DropDownStyle для ComboBox должен быть установлен в ComboBoxStyle.DropDownList . Таким образом, ComboBox разрешает выбирать существующие значения, пользователи не смогут вводить новые значения, и текст никогда не будет подсвечен.

0
добавлено

эти 3 строки помогли мне:

cbInstallationType.SelectionStart = 0;
cbInstallationType.SelectionLength = 0;
cbInstallationType.TabIndex = 99;

TabIndex должен быть не первым, так что это не первый элемент в форме

0
добавлено
У меня та же проблема, что и у ОП, и это не помогло
добавлено автор Martin Fernau, источник

Не уверен, что вы могли бы делать в фоновом режиме, т. Е. Уволенные события и т. Д. Однако в событии combox selectedindexchanged вы можете добавить anotherControl.Select ().

Это должно:)

0
добавлено
Нет, не получилось.
добавлено автор MattBH, источник

Вам просто нужно поместить этот код в сгенерированное событие или нажать кнопку, где вы хотите отменить выделение текста Combo Box

ComboBox1.SelectedItem = null;
0
добавлено
Да! хорошо, спасибо @shivam
добавлено автор Murtuza Khan, источник

В моем случае выбор появился после изменения размера. Это решило это:

textBox.Resize += (sender, args) =>
{
    Control c = sender as Control;
    if (c == null || c.Parent == null)
        return;

    c.Focus();
    c.Parent.Focus();
};
0
добавлено
Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

CSS — русскоговорящее сообщество
CSS — русскоговорящее сообщество
1 502 участник(ов)

Сообщество любителей CSS Возникли проблемы с CSS? – пиши сюда, обсудим и предложим самое лучшее решение Работа: @css_ru_jobs Правила: https://teletype.in/@css_ru/r1EWtQ2w7 Приходите в наши чаты @javascript_ru и @frontend_ru Флуд: @css_flood

Чат — Типичный Верстальщик
Чат — Типичный Верстальщик
1 080 участник(ов)

Основной канал: @tpverstak Обратная связь: @annblok Все ссылки на соц.сети проекта: http://taplink.cc/tpverstak ПРАВИЛА ЧАТА — https://teletype.in/@annblok/BygPgC3E7

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

Веб-Технологи: UI/UX, Вёрстка, Фронтенд
Веб-Технологи: UI/UX, Вёрстка, Фронтенд
167 участник(ов)

Всё про веб-дизайн и вёрстку. А также: HTML, CSS, флекс и бутстрапы, шаблонизаторы, препроцессоры, методологии, аглифаеры, улучшаторы и обфускаторы. Обсуждаем темы юзабилити, устраиваем А/В тесты лендингов, и проводим аудит.

DTP :: @DTPublish
DTP :: @DTPublish
147 участник(ов)

Обсуждаемые темы: полиграфия, препресс, верстка, дизайн, иллюстрации, скрипты, плагины. Канал - @DTPublishing

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)

css_jobs
css_jobs
26 участник(ов)

Чат для вопросов по css и html: @css_ru Флуд: @css_flood Канал с вакансиями и резюме: @css_jobs_feed

css_флуд
css_флуд
10 участник(ов)