как установить выбранный элемент в поле со списком, чтобы соответствовать моей строке с помощью c #?

<p>у меня есть строка «test1», и мой combobox содержит <code>test1</code>, <code>test2</code> и <code>test3</code>. как установить для выбранного элемента значение «test1»? то есть как мне сопоставить мою строку с одним из элементов combobox?</p><p>я думал о строке ниже, но это не работает.</p><pre><code>combobox1.selectedtext = "test1"; </code></pre>

<p>это должно сделать трюк:</p><pre><code>combox1.selectedindex = combox1.findstringexact("test1") </code></pre>

<p>вы пробовали <a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.text.aspx">text</a> свойство? меня устраивает. </p><pre><code>combobox1.text = "test1"; </code></pre><p>свойство selectedtext предназначено для выделенной части редактируемого текста в части текстового поля комбинированного окна.</p>

<p>предполагая, что ваш комбинированный список не связан с данными, вам нужно будет найти индекс объекта в коллекции «items» в вашей форме, а затем установить для свойства selectedindex соответствующий индекс.</p><pre><code>combobox1.selectedindex = combobox1.items.indexof("test1"); </code></pre><p>помните, что функция indexof может выдавать исключение аргумента, если элемент не найден.</p>

<p>если элементы в вашем combobox являются строками, вы можете попробовать:</p><pre><code>combobox1.selecteditem = "test1"; </code></pre>

<p>для меня это сработало только:</p><pre><code>foreach (comboboxitem cbi in somecombobox.items) { if (cbi.content as string == "sometextinthecombobox") { somecombobox.selecteditem = cbi; break; } } </code></pre><p>mod: и если у вас есть собственные объекты как элементы, настроенные в выпадающем списке, замените comboboxitem одним из них, например:</p><pre><code>foreach (debitor d in debitorcombo.items) { if (d.name == "chuck norris") { debitorcombo.selecteditem = d; break; } } </code></pre>

<p>selectedtext предназначен для получения или установки фактического текста в редакторе строк для выбранного элемента в выпадающем списке, как задокументировано <a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedtext.aspx">здесь</a> . это будет недоступно для редактирования, если вы установите:</p><pre><code>combobox1.dropdownstyle = system.windows.forms.comboboxstyle.dropdownlist; </code></pre><p>использование:</p><pre><code>combobox1.selecteditem = "test1"; </code></pre><p>или же:</p><pre><code>combobox1.selectedindex = combobox1.items.indexof("test1"); </code></pre>

<p>я использовал метод расширения:</p><pre><code>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; } } } </code></pre><p>тогда просто используйте метод:</p><pre><code>ddl.selectitembyvalue(value); </code></pre>

<pre><code>combobox1.selecteditem.text = "test1"; </code></pre>

<p>предположим, что test1, test2, test3 принадлежат коллекции combobox1, и следующий оператор будет работать. </p><pre><code>combobox1.selectedindex = 0; </code></pre>

<p>это решение основано на <a href="http://en.wikipedia.org/wiki/microsoft\_developer\_network">msdn</a> с некоторыми изменениями, которые я сделал.</p><ul> <li><p>он находит точную или <strong>часть</strong> строки и устанавливает ее.</p> <pre><code>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; } </code></pre></li> </ul><p>я надеюсь, что помог!</p>

<p>я заполнил свой combobox een datatable, заполненным из базы данных. затем я установил displaymember и valuemember. и я использую этот код для установки выбранного элемента.</p><pre><code>foreach (datarowview row in combobox1.items) { if (row["columnname"].tostring() == "value") combobox1.selecteditem = row; } </code></pre>

<pre><code>combobox1.selectedindex= combobox1.findstring("matching string"); </code></pre><p>попробуйте это в windows form.</p>

<p>я использовал<strong> keyvaluepair </strong>для привязки данных combobox и хотел найти элемент по<strong> значению </strong>поэтому в моем случае это сработало:</p><pre><code>combobox.selecteditem = combobox.items.cast<keyvaluepair<string,string>>().first(item=> item.value == "value to match"); </code></pre>

<ul> <li>перечислять listitems в выпадающем списке</li> <li>получи равные списки </li> <li>установите listindex для найденного.</li> </ul><p>но если я вижу такой код в качестве рецензента кода, я бы порекомендовал пересмотреть весь алгоритм метода.</p>

<p>у вас нет этого свойства в combobox. у вас есть selecteditem или selectedindex. если у вас есть объекты, которые вы использовали для заполнения поля со списком, вы можете использовать selecteditem.</p><p>если нет, вы можете получить коллекцию элементов (свойство items) и выполнять итерацию до тех пор, пока не получите нужное значение и не использовать его с другими свойствами.</p><p>надеюсь, поможет.</p>

<pre><code>\_cmbtemplates.selectedtext = "test1" </code></pre><p>или, может быть</p><pre><code>\_cmbtemplates.selecteditem= \_cmbtemplates.items.equals("test1"); </code></pre>

<p>все методы, приемы и строки кода, устанавливающие элемент combobox, не будут работать, пока у combobox не будет родительского элемента.</p>

<p>я создал функцию, которая будет возвращать индекс значения</p><pre><code> 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; } </code></pre>

<p>это работает для меня .....</p><pre><code>combobox.datasource.to<datatable>().select(" valuemember = '" + valuetobeselected + "'")[0]["dislplaymember"]; </code></pre>

<pre><code> listitem li = dropdownlist.items.findbyvalue("13001"); dropdownlist.selectedindex = ddlcostcenter.items.indexof(li); </code></pre><p>для вашего случая вы можете использовать </p><pre><code>dropdownlist.items.findbytext("text"); </code></pre>

<pre><code>combo.items.findbyvalue("1").selected = true; </code></pre>

<p>найдите mysecondobject (типа myobject) в выпадающем списке (содержащем список myobjects) и выберите элемент:</p><pre><code>foreach (myobject item in combobox.items) { if (item.nameorid == mysecondobject.nameorid) { combobox.selecteditem = item; break; } } </code></pre>