wake-up-neo.com

Wie stelle ich das ausgewählte Element in einer ComboBox mit C # auf meine Zeichenfolge ein?

Ich habe eine Zeichenfolge "test1" und meine ComboBox enthält test1, test2 und test3. Wie setze ich das ausgewählte Element auf "test1"? Wie stelle ich meine Zeichenfolge einem der Elemente der ComboBox zu?

Ich habe an die Zeile unten gedacht, aber das funktioniert nicht.

comboBox1.SelectedText = "test1"; 
167
May D

Das sollte den Trick tun:

Combox1.SelectedIndex = Combox1.FindStringExact("test1")
244
norbertB

Haben Sie die Eigenschaft Text ausprobiert? Für mich geht das. 

ComboBox1.Text = "test1";

Die SelectedText-Eigenschaft bezieht sich auf den ausgewählten Teil des bearbeitbaren Textes im Textfeldteil des Kombinationsfelds.

200
Andrew Kennan

Wenn Sie davon ausgehen, dass Ihre Combobox keine Datenbank enthält, müssen Sie den Index des Objekts in der Auflistung "items" Ihres Formulars suchen und dann die Eigenschaft "selectedindex" auf den entsprechenden Index setzen.

comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");

Beachten Sie, dass die Funktion IndexOf eine Argumentexception auslösen kann, wenn das Element nicht gefunden wird.

46
Spence

Wenn die Elemente in Ihrer ComboBox Zeichenfolgen sind, können Sie Folgendes versuchen:

comboBox1.SelectedItem = "test1";
34

Bei mir funktionierte das nur:

foreach (ComboBoxItem cbi in someComboBox.Items)
{
    if (cbi.Content as String == "sometextIntheComboBox")
    {
        someComboBox.SelectedItem = cbi;
        break;
    }
}

MOD: und wenn Sie Ihre eigenen Objekte als Elemente in der Combobox eingerichtet haben, ersetzen Sie das ComboBoxItem durch eines dieser Objekte:

foreach (Debitor d in debitorCombo.Items)
{
    if (d.Name == "Chuck Norris")
    {
        debitorCombo.SelectedItem = d;
        break;
    }
}
10
gabore

SelectedText dient dazu, den tatsächlichen Text im String-Editor für das ausgewählte Element in der Combobox als dokumentiert hier abzurufen. Dies kann nicht bearbeitet werden, wenn Sie Folgendes einstellen:

comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;

Benutzen:

comboBox1.SelectedItem = "test1";

oder:

comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");
7
Brian Rudolph

Ich habe eine Erweiterungsmethode verwendet:

public static void SelectItemByValue(this ComboBox cbo, string value)
{
    for(int i=0; i < cbo.Items.Count; i++)
    {
        var prop = cbo.Items[i].GetType().GetProperty(cbo.ValueMember);
        if (prop!=null && prop.GetValue(cbo.Items[i], null).ToString() == value)
        {
             cbo.SelectedIndex = i;
             break;
        }
    } 
}

Dann verbrauchen Sie einfach die Methode:

ddl.SelectItemByValue(value);
7
dave
comboBox1.SelectedItem.Text = "test1";
5
Ben

Angenommen, test1, test2, test3 gehören zur comboBox1-Auflistung, wenn folgende Anweisung funktioniert. 

comboBox1.SelectedIndex = 0; 
4
ihcarp

Diese Lösung basiert auf MSDN , wobei einige Änderungen vorgenommen wurden.

  • Er findet genau oder PART von string und setzt es.

    private int lastMatch = 0;
    private void textBoxSearch_TextChanged(object sender, EventArgs e)
    {
        // Set our intial index variable to -1.
        int x = 0;
        string match = textBoxSearch.Text;
        // If the search string is empty set to begining of textBox
        if (textBoxSearch.Text.Length != 0)
        {
            bool found = true;
            while (found)
            {
                if (comboBoxSelect.Items.Count == x)
                {
                    comboBoxSelect.SelectedIndex = lastMatch;
                    found = false;
                }
                else
                {
                    comboBoxSelect.SelectedIndex = x;
                    match = comboBoxSelect.SelectedValue.ToString();
                    if (match.Contains(textBoxSearch.Text))
                    {
                        lastMatch = x;
                        found = false;
                    }
                    x++;
                }
            }
        }
        else
            comboBoxSelect.SelectedIndex = 0;
    }
    

Ich hoffe ich habe geholfen!

4
Roman Polen.

Ich habe meine ComboBox mit einer DataTable aus einer Datenbank gefüllt. Dann habe ich das DisplayMember und das ValueMember eingestellt. Und ich verwende diesen Code, um das ausgewählte Element festzulegen.

foreach (DataRowView Row in ComboBox1.Items)
{
    if (Row["ColumnName"].ToString() == "Value") ComboBox1.SelectedItem = Row;
}
3
Jelle Smits
ComboBox1.SelectedIndex= ComboBox1.FindString("Matching String");

Versuchen Sie dies in Windows Form.

3
Muhammad Sohail

Ich habe KeyValuePair für ComboBox-Datenbindungen verwendet und wollte Artikel anhand von value finden, damit dies in meinem Fall funktioniert

comboBox.SelectedItem = comboBox.Items.Cast<KeyValuePair<string,string>>().First(item=> item.Value == "value to match");
1
Amit Bhagat
  • Auflisten von ListItems in einem Kombinationsfeld
  • Holen Sie sich gleiche Listenindex-Set-Combobox 
  • Setze listindex auf den gefundenen.

Wenn ich jedoch einen solchen Code als Code-Reviewer sehe, würde ich empfehlen, den gesamten Methodenalgorithmus zu überdenken.

1
user53378

Sie haben diese Eigenschaft nicht in der ComboBox. Sie haben SelectedItem oder SelectedIndex. Wenn Sie über die Objekte verfügen, mit denen Sie das Kombinationsfeld gefüllt haben, können Sie SelectedItem verwenden.

Wenn nicht, können Sie die Auflistung der Elemente (Eigenschaftselemente) abrufen und iterieren, bis Sie den gewünschten Wert erhalten und mit den anderen Eigenschaften verwenden.

ich hoffe es hilft.

1
Megacan
_cmbTemplates.SelectedText = "test1"

oder vielleicht

_cmbTemplates.SelectedItem= _cmbTemplates.Items.Equals("test1");
1
Dean

Alle Methoden, Tricks und Codezeilen, die das ComboBox-Element festlegen, funktionieren erst, wenn die ComboBox ein übergeordnetes Element hat.

0
user3599362

Ich habe eine Funktion erstellt, die den Index des Werts zurückgibt

        public static int SelectByValue(ComboBox comboBox, string value)
        {
            int i = 0;
            for (i = 0; i <= comboBox.Items.Count - 1; i++)
            {
                DataRowView cb;
                cb = (DataRowView)comboBox.Items[i];
                if (cb.Row.ItemArray[0].ToString() == value)// Change the 0 index if your want to Select by Text as 1 Index
                {
                    return i;
                }
            }
            return -1;
        }
0
Monzur

das funktioniert für mich .....

comboBox.DataSource.To<DataTable>().Select(" valueMember = '" + valueToBeSelected + "'")[0]["DislplayMember"];
0
Jaydeep Karena
  ListItem li = DropDownList.Items.FindByValue("13001");
  DropDownList.SelectedIndex = ddlCostCenter.Items.IndexOf(li);

Für Ihren Fall können Sie verwenden 

DropDownList.Items.FindByText("Text");
0
user874163
combo.Items.FindByValue("1").Selected = true;
0
Anderson

Suchen Sie mySecondObject (vom Typ MyObject) in der Combobox (mit einer Liste von MyObjects) und wählen Sie das Element aus:

foreach (MyObject item in comboBox.Items)
{
   if (item.NameOrID == mySecondObject.NameOrID)
    {
        comboBox.SelectedItem = item;
        break;
    }
}
0
Jos Roestenberg