ComboBox Öğeleri koleksiyonu bir ObjectCollection öğesidir, bu nedenle, orada istediğiniz her şeyi saklayabilirsiniz, ancak bu, ListViewItem ile yaptığınız gibi bir Text özelliğini alamadığınız anlamına gelir. ComboBox öğeleri, her öğede ToString() öğesini çağırarak veya DisplayMember özelliği ayarlanmışsa yansıma kullanarak görüntüler.Bir açılan kutu öğesini yerinde nasıl yeniliyorsunuz?
Benim ComboBox'ım DropDownList modunda. Kullanıcı tarafından seçildiğinde listedeki tek bir öğenin öğe metnini yenilemek istediğim bir durum var. Sorun, ComboBox'ın, yüklendiğinde yanında herhangi bir zamanda yeniden sorgulamadığı ve seçilen öğeyi kaldırmak ve yeniden eklemenin yanı sıra ne istediğimi başka bir şekilde yapamayacağımı anlayamıyorum:
PlantComboBoxItem selectedItem = cboPlants.SelectedItem as PlantComboBoxItem;
// ...
cboPlants.BeginUpdate();
int selectedIndex = cboPlants.SelectedIndex;
cboPlants.Items.RemoveAt(selectedIndex);
cboPlants.Items.Insert(selectedIndex, selectedItem);
cboPlants.SelectedIndex = selectedIndex;
cboPlants.EndUpdate();
Bu kod benim Selectedındex olay (yeniden bu kodda özelliği erme zaman bir kez özgün kullanıcı olayı ve) iki kez kovulmak biter gerçeği dışında, gayet iyi çalışıyor. Bu durumda, olayın iki kez ateşlenmesi önemli değil, ama verimsiz ve bundan nefret ediyorum. Bir bayrağı hazırlayabilirdim, böylece olay ikinci kez çıkar, ama bu hackleme.
Bunu işe almak için daha iyi bir yolu var mı?
, merak ediyorum. –
Noooooo ... ResetItem() SelectedIndexChanged yöntemini tetikler :( Oh iyi, bu hala orijinal çözümümün daha temiz olduğunu. –
'ResetItem()' işlevini çağırmanız gerekiyor mu? Eğer 'cboPlants' içindeki öğe değiştirilmeli sadece doğrudan güncellemek (Bence?).'SelectedIndexChanged' etkinliğinde '_plantList [selectedIndex]' ile erişebilirsiniz. – Donut