CheckBox, несколько элементов, которые будут добавлены через Json Writer, читая выбранные элементы из Checkbox - PullRequest
0 голосов
/ 01 мая 2018

У меня есть флажок с 7 различными опциями, которые можно проверить и использовать, среди них такие вещи, как range_close и component_type_stock, component_type_lostech.

Я сейчас пытаюсь записать их через JSON Writer в файл JSON, но если я использую

writer.WritePropertyName("ComponentTags");
writer.WriteStartObject();
writer.WritePropertyName("items"); 
writer.WriteRawValue(ComponentTagsCheckBox.CheckedItems.ToString());

Все, что я получаю, это

"ComponentTags": {
"items": System.Windows.Forms.CheckedListBox+CheckedItemCollection,

Когда у меня установлены флажки range_extreme и component_type_lostech, отмеченные флажком.

Я уже пытался использовать цикл for, заменив последнюю строку в предыдущем фрагменте кода

string s = "";
for (int x = 0; x <= ComponentTagsCheckBox.CheckedItems.Count - 1; x++)
            {
s = s + ComponentTagsCheckBox.CheckedItems[x].ToString();  //+ "\n";
                               }
 writer.WriteRawValue("["+ s +"]");

Здесь вывод не менее

"ComponentTags": {
"items": [component_type_lostechrange_extreme],
"tagSetSourceFile": ""

}

Но вывод должен быть таким

"ComponentTags" : {
"items" : [
"component_type_variant",
"component_type_variant2",
  "range_extreme"
],
"tagSetSourceFile" : ""

Я могу обойтись без того, чтобы он выглядел как последний фрагмент, если компоненты разделены точкой с запятой и окружены знаком "".

У меня также была идея разбить строку на массив, а затем снова разделить ее, но это кажется немного трудоемким.

1 Ответ

0 голосов
/ 01 мая 2018

Вы должны изменить последнюю строку следующим образом:

writer.WriteStartArray();
foreach (var item in ComponentTagsCheckBox.CheckedItems)
{
    writer.WriteValue(item.ToString());
}

writer.WriteEnd();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...