J'ai un CheckBoxList que je remplis avec des données. Lorsque je tente de récupérer les éléments cochés de la liste, je ne peux que récupérer l'ordinal d'élément, je ne peux pas obtenir la valeur.
J'ai lu que vous pouvez utiliser Items [i] .Value. Cependant, lorsque j'essaie de le faire, un message d'erreur indiquant qu'il n'y a pas de méthode d'extension 'value' n'existe.
Voici le code que j'utilise pour essayer de récupérer les informations (notez que GetItemText (i) ne me donne en fait que la position de l'élément, pas le texte de l'élément)
private void btnGO_Click(object sender, EventArgs e)
{
for (int i = 0; i < chBoxListTables.Items.Count; i++)
{
if (chBoxListTables.GetItemChecked(i))
{
string str = chBoxListTables.GetItemText(i);
MessageBox.Show(str);
//next line invalid extension method
chBoxListTables.Items[i].value;
}
}
}
Ceci utilise .Net 4.0
Toute pensée serait appréciée ... merci
Cela a fini par être assez simple. chBoxListTables.Item [i] est une valeur de chaîne et une conversion explicite a autorisé son chargement dans une variable . Le code suivant fonctionne:
private void btnGO_Click(object sender, EventArgs e)
{
for (int i = 0; i < chBoxListTables.Items.Count; i++)
{
if (chBoxListTables.GetItemChecked(i))
{
string str = (string)chBoxListTables.Items[i];
MessageBox.Show(str);
}
}
}
Essayez d'utiliser ceci.
for (int i = 0; i < chBoxListTables.Items.Count; i++)
{
if (chBoxListTables.Items[i].Selected)
{
string str = chBoxListTables.Items[i].Text;
MessageBox.Show(str);
var itemValue = chBoxListTables.Items[i].Value;
}
}
Le "V" doit être en CAPS en valeur.
Voici un autre exemple de code utilisé dans l'application WinForm et qui fonctionne correctement.
var chBoxList= new CheckedListBox();
chBoxList.Items.Add(new ListItem("One", "1"));
chBoxList.Items.Add(new ListItem("Two", "2"));
chBoxList.SetItemChecked(1, true);
var checkedItems = chBoxList.CheckedItems;
var chkText = ((ListItem)checkedItems[0]).Text;
var chkValue = ((ListItem)checkedItems[0]).Value;
MessageBox.Show(chkText);
MessageBox.Show(chkValue);
pour obtenir les éléments vérifiés, vous pouvez utiliser CheckedItems
ou GetItemsChecked
. J'ai essayé ci-dessous le code dans .NET 4.5
Parcourez la collection CheckedItems
. Cela vous donnera le numéro d'article dans la liste des articles cochés, pas la liste globale. Ainsi, si le premier élément de la liste n'est pas coché et que le second élément est coché, le code ci-dessous affichera un texte du type Checked Item 1 = MyListItem2
.
//Determine if there are any items checked.
if(chBoxListTables.CheckedItems.Count != 0)
{
//looped through all checked items and show results.
string s = "";
for (int x = 0; x < chBoxListTables.CheckedItems.Count; x++)
{
s = s + (x + 1).ToString() + " = " + chBoxListTables.CheckedItems[x].ToString()+ ", ";
}
MessageBox.Show(s);//show result
}
-OU-
Parcourez la collection Items et appelez la méthode GetItemChecked
pour chaque élément. Cela vous donnera le numéro de l'article dans la liste globale. Ainsi, si le premier élément de la liste n'est pas coché et que le second élément est coché, il affichera quelque chose comme Item 2 = MyListItem2
.
int i;
string s;
s = "Checked items:\n" ;
for (i = 0; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemChecked(i))
{
s = s + "Item " + (i+1).ToString() + " = " + checkedListBox1.Items[i].ToString() + "\n";
}
}
MessageBox.Show (s);
J'espère que cela t'aides...
Vous pouvez essayer ceci: -
string values = "";
foreach(ListItem item in myCBL.Items){
if(item.Selected)
{
values += item.Value.ToString() + ",";
}
}
values = values.TrimEnd(','); //To eliminate comma in last.
// Exemple de code simple:
foreach (var item in YourCheckedListBox.CheckedItems)
{List<string>.Add(item);}
Au lieu de cela:
CheckboxList1.Items[i].value;
Essaye ça:
CheckboxList1.Items[i].ToString();
Cela a fonctionné pour moi :)
Vous pouvez initialiser une liste de chaînes et ajouter les éléments sélectionnés.
S'il vous plaît vérifier le code, fonctionne bien pour moi.
List<string> modules = new List<string>();
foreach(ListItem s in chk_modules.Items)
{
if (s.Selected)
{
modules.Add(s.Value);
}
}
Essayez d'utiliser ceci:
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < chBoxListTables.Items.Count; i++)
if (chBoxListTables.GetItemCheckState(i) == CheckState.Checked)
{
txtBx.text += chBoxListTables.Items[i].ToString() + " \n";
}
}