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

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

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

```
// 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;

```

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

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

```
combobox1.SelectionLength = 0;

```



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

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

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

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

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

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

```

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

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



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

```
combo.SelectedText = String.Empty;

```

Что касается вашей проблемы с фокусом: ( [MSDN](https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedtext.aspx) )

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

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

```
anotherControl.Focus(); 

```



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

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

```
Combobox.SelLength :=  0; 

```

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

```
Combobox.Style := csDropDownList; 

```

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

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



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

```
private void faceComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
     this.ActiveControl = cancelButton;
}

```



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

```
new System.Threading.Timer((s) =>
            {
                comboBox1.Invoke(new Action(() =>
                {
                    comboBox1.Select(0, 0);
                }));
            }, null, 10, System.Threading.Timeout.Infinite);

```



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

```
combo.selectedindex = -1;

```



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



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

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

```

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



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

Это должно:)



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

```
ComboBox1.SelectedItem = null;

```



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

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

    c.Focus();
    c.Parent.Focus();
};

```