'item3' dizgisi ve 'item1, item2, item3, item4' olan bir liste kutum var, bir dize içinde öğe ismim olduğunda liste kutusundaki item3'ü nasıl seçerim?C# Bir dizede değer adına sahip olduğumda liste kutusu öğesini nasıl seçerim?
Teşekkür
'item3' dizgisi ve 'item1, item2, item3, item4' olan bir liste kutum var, bir dize içinde öğe ismim olduğunda liste kutusundaki item3'ü nasıl seçerim?C# Bir dizede değer adına sahip olduğumda liste kutusu öğesini nasıl seçerim?
Teşekkür
int index = listBox1.FindString("item3");
// Determine if a valid index is returned. Select the item if it is valid.
if (index != -1)
listBox1.SetSelected(index,true);
Ya da lb.SelectedIndex = lb.FindStringExact (fieldValue); –
Bunların hiçbiri benim için çalışmaz, çünkü .SetSelected() işlevini kullanmıyorum ... SystemBox komutlarını System.Controls kullanıyorum ve farklı olduğunu fark ettim .. –
okuma/yazma SelectedValue değil midir?
Denedim lstbox.selectedvalue = strItem; ama bu benim için işe yaramadı. –
Bu WinForms veya WebForms mı? – Lazarus
listBox.FindStringExact("item3");
Bulunan ilk öğenin dizinini veya herhangi bir eşleşme bulunmazsa ListBox.NoMatches değerini döndürür.
sonra
ListBox.SetSelected
yöntemi ile deneyin Bu Ürünü seçmek için
listBox.SetSelected(index, true);
çağırabilir. Belki böyle
:
public bool SelectItem(ListBox listBox, string item)
{
bool contains = listBox.Items.Contains(item);
if (!contains)
return false;
listBox.SelectedItem = item;
return listBox.SelectedItems.Contains(item);
}
Deney yöntemi: listbox için ValueMember ayarladıysanız
public void Test()
{
string item = "item1";
if (!SelectItem(listBox, item))
{
MessageBox.Show("Item not found.");
}
}
Daha iyi ileti "Öğe bulunamadı. " Ayrıca bir test yöntemi sağlamak için –
+1. İyi programlama alışkanlığı. –
SelectedValue sadece çalışacaktır.
Ayrıca, ValueMember değerini ayarlamanıza rağmen, ListBox.Sorted = true ise, seçili Değer çalışmaz.
Kontrol dışarı Setting selected item in a ListBox without looping
benim yazı Bu yaklaşımlardan biri deneyebilirsiniz:
lb.SelectedValue = fieldValue;
lb.SelectedIndex = lb.FindStringExact(fieldValue);
Bu, tüm süzer için genel bir yöntemdir. Uygulamanız, liste kutusuna bağlandığınıza bağlı olarak değişecektir. Benim durumumda DataTable. selectedValue işe yaramazsa
private void SetSelectedIndex(ListBox lb, string value)
{
for (int i = 0; i < lb.Items.Count; i++)
{
DataRowView dr = lb.Items[i] as DataRowView;
if (dr["colName"].ToString() == value)
{
lb.SelectedIndices.Add(i);
break;
}
}
}
Bu, SO'da bir kızı ilk gördüğüm zaman. Görmek güzel. Ama yine de benim emrimlerim boşuna bir hata ile işaret etmek için çağırıyorlar. Cevabınız tamamen doğrudur (şimdiye kadar kontrol ettim). – prabhakaran
static class ControlHelper
{
public static void SelectExactMatch(this ComboBox c, string find)
{
c.SelectedIndex = c.FindStringExact(find, 0);
}
}
CheckBoxList.Items.FindByValue("Value").Selected = true;
kodunuzu gönderebilir miyim? – kemiller2002
WPF kullanıyor musunuz? SelectedValue'un birkaç denetlemede R/W olmadığını biliyorum. Eğer öyleyse, WPF sorularını WPF olarak etiketlemeyi unutmayın. Değilse, beni görmezden gel;) –