J'ai utilisé un CheckedListBox sur mon WinForm en C #. J'ai limité ce contrôle comme indiqué ci-dessous -
chlCompanies.DataSource = dsCompanies.Tables[0];
chlCompanies.DisplayMember = "CompanyName";
chlCompanies.ValueMember = "ID";
Je peux obtenir les indices des éléments vérifiés, mais comment puis-je obtenir le texte et la valeur de l'élément vérifié. Comment puis-je énumérer à travers CheckedItems accéder au texte et valeur?
Merci de partager votre temps.
Remettez-le à son type d'origine, qui sera un DataRowView si vous liez une table. Vous pouvez ensuite obtenir l'ID et le texte des colonnes appropriées:
foreach(object itemChecked in checkedListBox1.CheckedItems)
{
DataRowView castedItem = itemChecked as DataRowView;
string comapnyName = castedItem["CompanyName"];
int? id = castedItem["ID"];
}
EDIT: J'ai compris un peu tard que c'était lié à un DataTable. Dans ce cas, l'idée est la même, et vous pouvez transtyper une DataRowView
puis utiliser sa propriété Row
pour obtenir une DataRow
si vous souhaitez utiliser cette classe.
foreach (var item in checkedListBox1.CheckedItems)
{
var row = (item as DataRowView).Row;
MessageBox.Show(row["ID"] + ": " + row["CompanyName"]);
}
Vous devez convertir ou analyser les éléments en leurs équivalents fortement typés ou utiliser l'espace de noms System.Data.DataSetExtensions
pour utiliser la méthode DataRowExtensions.Field
démontrée ci-dessous:
foreach (var item in checkedListBox1.CheckedItems)
{
var row = (item as DataRowView).Row;
int id = row.Field<int>("ID");
string name = row.Field<string>("CompanyName");
MessageBox.Show(id + ": " + name);
}
Vous devez lancer l'élément pour accéder aux propriétés de votre classe.
foreach (var item in checkedListBox1.CheckedItems)
{
var company = (Company)item;
MessageBox.Show(company.Id + ": " + company.CompanyName);
}
Vous pouvez également utiliser la méthode OfType
extension pour obtenir des résultats fortement typés sans transtyper explicitement dans la boucle:
foreach (var item in checkedListBox1.CheckedItems.OfType<Company>())
{
MessageBox.Show(item.Id + ": " + item.CompanyName);
}
Vous pouvez parcourir la propriété CheckedItems
:
foreach(object itemChecked in checkedListBox1.CheckedItems)
{
MyCompanyClass company = (MyCompanyClass)itemChecked;
MessageBox.Show("ID: \"" + company.ID.ToString());
}
http://msdn.Microsoft.com/en-us/library/system.windows.forms.checkedlistbox.checkeditems.aspx
foreach (int x in chklstTerms.CheckedIndices)
{
chklstTerms.SelectedIndex=x;
termids.Add(chklstTerms.SelectedValue.ToString());
}
Pour obtenir tous les éléments sélectionnés dans CheckedListBox, essayez ceci:
Dans ce cas, cette valeur est une chaîne mais elle est exécutée avec un autre type d'objet:
for (int i = 0; i < myCheckedListBox.Items.Count; i++)
{
if (myCheckedListBox.GetItemChecked(i) == true)
{
MessageBox.Show("This is the value of ceckhed Item " + myCheckedListBox.Items[i].ToString());
}
}
Egypt Development Blog: Obtenir la valeur de l'élément vérifié dans CheckedListBox dans vb.net
after bind CheckedListBox avec des données, vous pouvez obtenir la valeur des éléments vérifiés
For i As Integer = 0 To CheckedListBox1.CheckedItems.Count - 1
Dim XDRV As DataRowView = CType(CheckedListBox1.CheckedItems(i), DataRowView)
Dim XDR As DataRow = XDRV.Row
Dim XDisplayMember As String = XDR(CheckedListBox1.DisplayMember).ToString()
Dim XValueMember As String = XDR(CheckedListBox1.ValueMember).ToString()
MsgBox("DisplayMember : " & XDisplayMember & " - ValueMember : " & XValueMember )
Next
vous pouvez maintenant utiliser la valeur ou l'affichage des éléments cochés dans CheckedListBox à partir des 2 variables XDisplayMember et XValueMember dans la boucle.
espérons être utile.