Ответ 1
Это должно сделать трюк:
Combox1.SelectedIndex = Combox1.FindStringExact("test1")
У меня есть строка "test1", и мой comboBox содержит test1
, test2
и test3
. Как установить выбранный элемент в "test1"? То есть, как мне сопоставить мою строку с одним из элементов comboBox?
Я думал о строке ниже, но это не работает.
comboBox1.SelectedText = "test1";
Это должно сделать трюк:
Combox1.SelectedIndex = Combox1.FindStringExact("test1")
Вы пробовали свойство Text? Меня устраивает.
ComboBox1.Text = "test1";
Свойство SelectedText для выбранной части редактируемого текста в текстовом поле в поле со списком.
Предполагая, что ваш combobox не привязан к базе данных, вам нужно будет найти индекс объекта в коллекции "items" в вашей форме, а затем установить свойство "selectedindex" в соответствующий индекс.
comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");
Имейте в виду, что функция IndexOf может вызывать исключение аргумента, если элемент не найден.
Если элементы в вашем ComboBox являются строками, вы можете попробовать:
comboBox1.SelectedItem = "test1";
Для меня это работало только:
foreach (ComboBoxItem cbi in someComboBox.Items)
{
if (cbi.Content as String == "sometextIntheComboBox")
{
someComboBox.SelectedItem = cbi;
break;
}
}
MOD: и если у вас есть свои собственные объекты в качестве элементов, настроенных в выпадающем списке, то замените ComboBoxItem одним из них следующим образом:
foreach (Debitor d in debitorCombo.Items)
{
if (d.Name == "Chuck Norris")
{
debitorCombo.SelectedItem = d;
break;
}
}
SelectedText - это получить или установить фактический текст в редакторе строк для выбранного элемента в поле со списком, как описано здесь. Это будет недействительным, если вы установите:
comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
Использование:
comboBox1.SelectedItem = "test1";
или
comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");
Я использовал метод расширения:
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;
}
}
}
Затем просто используйте метод:
ddl.SelectItemByValue(value);
ComboBox1.SelectedIndex= ComboBox1.FindString("Matching String");
Попробуйте это в Windows Form.
comboBox1.SelectedItem.Text = "test1";
Предположим, что test1, test2, test3 принадлежат коллекции comboBox1, следующая инструкция будет работать.
comboBox1.SelectedIndex = 0;
Это решение основано на MSDN с некоторыми изменениями, которые я сделал.
Он находит точную или ЧАСТЬ строки и устанавливает ее.
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;
}
Надеюсь, я помог!
Я заполнил свой ComboBox een DataTable, заполненный из базы данных. Затем я установил DisplayMember и ValueMember. И я использую этот код для установки выбранного элемента.
foreach (DataRowView Row in ComboBox1.Items)
{
if (Row["ColumnName"].ToString() == "Value") ComboBox1.SelectedItem = Row;
}
Но если я увижу такой код, как рецензент кода, я бы рекомендовал пересмотреть весь алгоритм метода.
У вас нет этого свойства в ComboBox. У вас есть SelectedItem или SelectedIndex. Если у вас есть объекты, которые вы использовали для заполнения поля со списком, вы можете использовать SelectedItem.
Если нет, вы можете получить коллекцию элементов (элементов свойств) и повторить ее до тех пор, пока не получите нужное значение и не используйте это с другими свойствами.
надеюсь, что это поможет.
_cmbTemplates.SelectedText = "test1"
или, возможно,
_cmbTemplates.SelectedItem= _cmbTemplates.Items.Equals("test1");
Я использовал KeyValuePair для связывания данных ComboBox, и я хотел найти элемент значение, так что это сработало в моем случае:
comboBox.SelectedItem = comboBox.Items.Cast<KeyValuePair<string,string>>().First(item=> item.Value == "value to match");
ListItem li = DropDownList.Items.FindByValue("13001");
DropDownList.SelectedIndex = ddlCostCenter.Items.IndexOf(li);
В вашем случае вы можете использовать
DropDownList.Items.FindByText("Text");
combo.Items.FindByValue("1").Selected = true;
Все методы, трюки и строки кода ComboBox не будут работать, пока ComboBox не будет иметь родителя.
Я создал функцию, которая вернет индекс значения
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;
}
это работает для меня.....
comboBox.DataSource.To<DataTable>().Select(" valueMember = '" + valueToBeSelected + "'")[0]["DislplayMember"];
Найдите mySecondObject (типа MyObject) в выпадающем списке (содержащем список MyObjects) и выберите элемент:
foreach (MyObject item in comboBox.Items)
{
if (item.NameOrID == mySecondObject.NameOrID)
{
comboBox.SelectedItem = item;
break;
}
}
Вы можете сказать comboBox1.Text = comboBox1.Items[0].ToString();
Пожалуйста, попробуйте этот способ, он работает для меня:
Combobox1.items[Combobox1.selectedIndex] = "replaced text";
Он должен работать
Yourcomboboxname.setselecteditem("yourstring");
И если вы хотите установить строку базы данных, используйте этот
Comboboxname.setselecteditem(ps.get string("databasestring"));