Bir combobox metni nasıl kaldırılır

Verilerimin anahtar-değer çiftleri listesiyle bağlandığı bir kripton açılan kutum var. Olanak şu ki, seçilen öğeyi kod olarak ayarladığımda, metni vurgulamaktır. Bunu nasıl önleyebilirim veya metni nasıl kaldırabilirim?

Aşağıdakileri denedim:

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

Hiçbir şey işe yaramıyor. Herhangi bir yardım takdir edilir.

16

12 cevap

Bunu gerçekleştirmeyi başardım, kontrolümün/penceremin OnPaint olayını geçersiz kıldım ve

combobox1.SelectionLength = 0;
6
katma
Bunu yapmak ve daha sonra metni vurgulayamıyorum. OnPaint yöntemi sık sık çağrıldığı için her seferinde seçimi kaldırılıyor
katma yazar Martin Fernau, kaynak

Çalışan bir çözüm bulmuş olabilirim:

Bir form kullanıyorsanız, formun Gösterilen etkinliğe abone olun.

VEYA

Bir UserControl (Ben gibi) kullanıyorsanız, VisibleChanged olayına abone olabilirsiniz.

Etkinlikte, aşağıdakileri yapabilirsiniz:

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

Bir kenara:

Bunu, ComboBox'ları kontrole eklediğim ve daha sonra boyutlarını dinamik olarak ayarlaması gereken bir kullanıcı kontrolü için yapmak zorunda kaldım. Boyutun ayarlanması OP'nin karşılaştığı vurguya neden oldu.

3
katma
Bu benim için de çalıştı. Harika
katma yazar Martin Fernau, kaynak

Bunu dene

combo.SelectedText = String.Empty;

Sorunla ilgili olarak: ( MSDN )

Birleşik kutu odağı kaybettiğinde, seçim noktası   metnin başlangıcı ve seçilen herhangi bir metin seçilmemiş olur

Çok garip; Aşağıdaki neden çalışmadı:

anotherControl.Focus(); 
2
katma
Çalışma Belki bu cevap eski C# için gerçek.
katma yazar Gurebu Bokofu, kaynak
Teşekkürler, ama işe yaramadı
katma yazar MattBH, kaynak
Yüklendikten sonra üzerine tıklayıp daha sonra başka bir şeye tıkladığımda garip olur, o zaman odak noktası çalışır! beni deli ediyor
katma yazar MattBH, kaynak
bağlı, ama sonra listeden bir öğe seçiyorum. Temel olarak bir db'den önceden doldurulmuş bir form, bu yüzden doğru öğeyi seçmem gerekiyor.
katma yazar MattBH, kaynak
combobox'ınız bazı veri kaynağına bağlı mı? Varsa, SelectedIndex = -1'i deneyin.
katma yazar sll, kaynak

Bunun kaç yaşında olduğu umrumda değil. Bir bilgi tabanı oluşturuyoruz.

Ben D5 kullanıyorum (ve muhtemelen önceki sürümleri aynıdır). Kullanmanız gerekenler:

Combobox.SelLength :=  0; 

Ayrıca, bu işe yaramıyorsa, bunu yapar: Varsayılan Stilden (csDropDown) kaçının.   Ve şöyle ayarlayın:

Combobox.Style := csDropDownList; 

Alex'in önerdiği gibi.

Teşekkür ederim. Harika çalışıyor!

1
katma
D5? Delphi'yi mi kastediyorsun? [C #] etiketli bir soruda mı?
katma yazar jean, kaynak
Pardon ama burada göstermiş olduğunuz sözdizimi C# gibi görünmüyor.
katma yazar kayess, kaynak

İşte yaptığım şey:

private void faceComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
     this.ActiveControl = cancelButton;
}
0
katma
this.ActiveControl = null; da çalışır.
katma yazar Alden, kaynak

SelectedIndexChanged olayında, 10 milisaniyeden sonra yalnızca bir kez çalıştırılacak olan zamanlayıcıyı ekleyin.

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

Bu soruyu sorduğundan beri bir süre oldu biliyorum. Ama yapabileceğin şey buydu

combo.selectedindex = -1;
0
katma
Teşekkürler, ancak seçilen öğeyi değiştirmeye çalışmıyorum, sadece metni vurgulamak istiyorum.
katma yazar MattBH, kaynak

Kullanıcının ComboBox değerlerini düzenleyip düzenleyemeyeceğini belirtmediniz. Değilse, ComboBox'un DropDownStyle öğesi ComboBoxStyle.DropDownList olarak ayarlanmalıdır. Bu şekilde, ComboBox sadece mevcut değerleri seçmeye izin verecek, kullanıcılar yeni değerler yazamayacak ve metin hiçbir zaman vurgulanmayacaktır.

0
katma

Bu 3 satır bana yardımcı oldu:

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

TabIndex, ilk değil, formdaki ilk öğe değil.

0
katma
OP ile aynı problemi yaşadım ve bu yardımcı olmadı
katma yazar Martin Fernau, kaynak

Arka planda ne yaptığınızdan emin değilsiniz, örneğin ateşlenmiş olaylar vs. Ancak combox selectedindexchanged olayında anotherControl.Select() ekleyebilirsiniz.

Bu olmalı :)

0
katma
Hayır işe yaramadı.
katma yazar MattBH, kaynak

Bu kodu oluşturulan etkinlik üzerine yerleştirmeniz veya bir Combo Box'ın metninin seçimini kaldırmak istediğiniz düğmeyi tıklamanız yeterlidir.

ComboBox1.SelectedItem = null;
0
katma
Evet! iyi, teşekkürler @shivam
katma yazar Murtuza Khan, kaynak

Durumumda yeniden boyutlandırıldıktan sonra seçim belirdi. Bu çözüldü:

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

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