2010-02-04 5 views
0

J'ai 7 cases à cocher. Ce que je veux, c'est faire une chaîne pour chacune de ces cases à cocher. Signification si j'avais ....C# checkbox to string question

orange pomme poire prune raisin tigre rouge

Et poire orange et rouge où vérifié.

j'obtenir une chaîne qui a produit « orange, poire, rouge »

+1

Quel cadre? Formulaires ASP.NET, MVC, WinForms? –

Répondre

3

Quel est le problème, vous avez juste besoin cela?

StringBuilder sb = new StringBuilder(); 
foreach(var cb in checkBoxes) 
{ 
    if(cb.IsChecked) 
    { 
     sb.Append(cb.Text); 
     sb.Append(';'); 
    } 
} 
+0

Bien, mais vous pourriez vouloir ajouter une ligne de code pour couper le point-virgule. –

+0

ArsenMkrt, tu m'as battu pendant quelques secondes. de plus, je nous avons besoin de produire une chaîne qui n'est pas comme le nom, nous pouvons utiliser l'attribut Tag de la case à cocher pour stocker la chaîne. – Jonathan

+0

Que vous pouvez utiliser Tag, mais je pense que le texte est exactement ce qu'il veut, en wonforms, et Content.ToString() en wpf, juste parce que je ne sais pas est-ce projet wpf ou winform, j'ai utilisé le nom, je vais le changer maintenant –

1
var values = (from c in new[] { c1, c2, c3, c4, c5, c6, c7 } 
       where c.Checked 
       select c.Text).ToArray(); 
var result = string.Join(";", values); 
2

Vous pouvez utiliser quelque chose de similaire à:

List<CheckBox> boxes; 
String result = String.Join(" ; ", boxes.Where(box => box.Checked) 
             .Select(box => box.Text).ToArray()); 
3

Ce que je fais habituellement quand on veut concaténer des chaînes avec un séparateur donné, met mes cordes dans un tableau de chaînes, puis utilisez la String.Join méthode. Exemple:

string.Join(";", new string[] { "test1", "test2", "test3" }); // Which outputs test1;test2;test3 
0

Vous n'avez pas spécifié WinForms par rapport à WPF; Je vais supposer WinForms mais le code est presque identique pour WPF (remplacer Checked par IsChecked et Text par Tag). Le contrôle CheckBox a une propriété Checked indiquant si oui ou non le CheckBox est dans l'état vérifié. Donc, dites que vous êtes CheckBox dans un tableau CheckBox[] checkBoxes. Alors vous pourriez dire

List<string> checkedItems = new List<string>(); 
for(int i = 0; i < checkBoxes.Length; i++) { 
    CheckBox checkBox = checkBoxes[i]; 
    if(checkBox.Checked) { 
     checkedItems.Add(checkBox.Text); 
    } 
} 
string result = String.Join(" ; ", checkedItems.ToArray()); 

Bien sûr, cet impératif et dégoûtant. Obtenons heureux avec quelques belles Code déclarative LINQ:

string result = String.Join(
        " ; ", 
        checkBoxes.Where(cb => cb.Checked) 
           .Select(cb => cb.Text) 
           .ToArray() 
       ); 

Si vos CheckBox es ne sont pas dans le tableau, vous pourriez commencer par les mettre dans le tableau via

CheckBox[] checkBoxes = new[] { c1, c2, c3, c4, c5, c6, c7 }; 

c1, c2, .. ., c7 sont vos CheckBox es.