Comment désélectionner le texte d'un combobox

j'ai une boîte bascule krypton que je lie aux données avec une liste de paires de valeurs clés. Ce qui se passe, c'est que lorsque je mets l'élément sélectionné dans le code, il met en évidence le texte. Comment puis-je empêcher cela ou désélectionner le texte?

j'ai essayé ce qui suit:

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

Rien ne semble fonctionner. Toute aide est appréciée.

16
demandé sur Murtuza Khan 2011-10-27 17:33:24

13 réponses

j'ai réussi à accomplir cela en dépassant l'événement OnPaint de mon contrôle / fenêtre et en faisant

combobox1.SelectionLength = 0;
6
répondu Scott 2014-02-26 04:22:59

j'ai peut-être trouvé une solution qui fonctionne:

si vous utilisez un formulaire, abonnez-vous à L'événement affiché du formulaire.

OR

si vous utilisez un UserControl (comme je le suis), vous pouvez vous abonner à L'événement VisibleChanged.

Dans le cas, vous pouvez procéder de la façon suivante:

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

à part:

j'ai fini par avoir à le faire pour un contrôle de l'utilisateur dans lequel j'ai ajouté des ComboBoxes au contrôle et puis nécessaire pour plus tard régler dynamiquement leur taille. Le réglage de la taille a causé la mise en évidence que L'OP rencontrait.

3
répondu Smitty 2012-11-07 23:04:25

Essayer

combo.SelectedText = String.Empty;
MSDN)

lorsque la boîte bascule perd de sa concentration, le point de sélection se déplace vers le début du texte et le texte sélectionné devient non sélectionnés

Si étrange, pourquoi est le suivant ne fonctionne pas:

anotherControl.Focus(); 
2
répondu sll 2016-05-04 22:25:23

Pas sûr de ce que vous pourriez faire dans le contexte ie tiré d'événements, etc. Cependant, dans l'événement combox selectedindexchanged, vous pouvez ajouter un autre control.Sélectionner.)(

Qui devrait:)

0
répondu spoon 2011-10-27 14:02:24

je sais que cela fait longtemps que vous n'avez pas posé cette question. Mais voici ce que vous pouvez faire

combo.selectedindex = -1;
0
répondu gurrawar 2012-06-29 20:16:45

Voici ce que je fais:

private void faceComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
     this.ActiveControl = cancelButton;
}
0
répondu Cesar A. Rivas 2013-02-05 01:36:51

vous n'avez pas spécifié si l'utilisateur est supposé être capable d'éditer les valeurs de ComboBox ou non. Si non, alors DropDownStyle de la zone de liste déroulante doit être fixé à ComboBoxStyle.DropDownList. De cette façon, le ComboBox ne permettra de sélectionner que les valeurs existantes, les utilisateurs ne pourront pas taper de nouvelles valeurs et le texte ne sera jamais surligné.

0
répondu Alex 2013-05-30 08:00:32

ces 3 lignes m'ont aidé:

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

TabIndex doit pas être la première, de sorte qu'il n'est pas le premier élément de la forme

0
répondu Aedna 2014-10-22 20:25:51

il vous suffit de placer ce code sur l'événement généré ou de cliquer sur le bouton où vous voulez désélectionner le texte d'une boîte bascule

ComboBox1.SelectedItem = null;
0
répondu Murtuza Khan 2015-02-16 11:16:49

dans mon cas, sélectionner est apparu après redimensionner. Cette résolu:

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

    c.Focus();
    c.Parent.Focus();
};
0
répondu P. Av. 2016-09-26 20:42:46

on event SelectedIndexChanged ajoute la minuterie qui ne sera exécutée qu'une seule fois après 10 millisecondes.

new System.Threading.Timer((s) =>
            {
                comboBox1.Invoke(new Action(() =>
                {
                    comboBox1.Select(0, 0);
                }));
            }, null, 10, System.Threading.Timeout.Infinite);
0
répondu Geograph 2017-04-29 13:40:00

abonnez-vous à l'événement" SelectedIndexChanged", qui a la tâche de définir L'Objectif du ComboBox.

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    comboBox1.Focus();
}

abonnez-vous à L'événement" Paint " à partir du formulaire principal. L'éviction prend place dans ce gestionnaire d'événement:

private void MainForm_Paint(object sender, PaintEventArgs e)
{
    comboBox1.SelectionLength = 0;
}
0
répondu Martin Wantke 2018-08-28 20:03:07

je ne se soucient pas comment les vieux c'est. Nous construisons une base de connaissances.

j'utilise D5 (et probablement les versions précédentes sont les mêmes). Vous devez utiliser:

Combobox.SelLength :=  0; 

aussi, si cela ne fonctionne pas, celui-ci le fait: éviter le Style par défaut (csDropDown). Et de le définir:

Combobox.Style := csDropDownList; 

comme Alex l'a suggéré.

je vous Remercie. Fonctionne très bien!

-1
répondu Daniel Yahdav 2016-06-29 23:33:04