web-dev-qa-db-fra.com

Comment obtenir la valeur de l'élément vérifié de CheckedListBox?

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.

23
IrfanRaza

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"];
}
28
w69rdy

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);
}
14
Ahmad Mageed

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

8
Evan Mulawski
foreach (int x in chklstTerms.CheckedIndices)
{
    chklstTerms.SelectedIndex=x;
    termids.Add(chklstTerms.SelectedValue.ToString());
}
1

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());

    }

}
0
daniele3004

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.

0
Kareem Allam