Сохранение позиции CheckBox в TabControl

124
01 сентября 2019, 14:00

Возник некий вопрос, как правильно сделать сохранения позиции выбранных чекбоксов в TabContol. Вот мой код для сохранения. При нажатии кнопки сохранить, в файл не записываются выбранные позиции чексбоксов. Можете мене помочь в решении этой проблемы.

private void saveCheckboxButton_Click(object sender, EventArgs e)
    {
        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.Load(Program.pathToMyPluginDir + "\\box.xml");
        XmlNode xmlNode = xmlDocument.SelectSingleNode("root").SelectSingleNode("menu");
        xmlNode.RemoveAll();
        Dictionary<int, string> dictionary = new Dictionary<int, string>();
        int num = 0;
        foreach (object obj in this.orderLv.Items)
        {
            ListViewItem listViewItem = (ListViewItem)obj;
            if (listViewItem.Text.Contains(Language.plugin_delete_antianalytics))
            {
                if (this.analyticActivityCB.Checked)
                {
                    dictionary.Add(num, this.analyticActivityCB.Text);
                    num++;
                }
                if (this.analyticServiceCB.Checked)
                {
                    dictionary.Add(num, this.analyticServiceCB.Text);
                    num++;
                }
                if (this.analyticLinksCB.Checked)
                {
                    dictionary.Add(num, this.analyticLinksCB.Text);
                    num++;
                }
                if (this.analyticFirebaseCB.Checked)
                {
                    dictionary.Add(num, this.analyticFirebaseCB.Text);
                    num++;
                }
                if (this.analyticReceiverCB.Checked)
                {
                    dictionary.Add(num, this.analyticReceiverCB.Text);
                    num++;
                }
                if (this.analyticLayoutCB.Checked)
                {
                    dictionary.Add(num, this.analyticLayoutCB.Text);
                    num++;
                }
                if (this.analyticMethodCB.Checked)
                {
                    dictionary.Add(num, this.analyticMethodCB.Text);
                    num++;
                }
            }
            else
            {
                dictionary.Add(num, listViewItem.Text);
                num++;
            }
        }
        //здесь как раз и наблюдается проблема
        foreach (TabPage tabPage in this.mainTabControl.Controls)
        {
             foreach (Control control in tabPage.Controls)
            {
                GroupBox groupBox = new GroupBox();
                tabPage.Controls.Add(groupBox);
                if (control is CheckBox checkBox)
                {
                    XmlNode xmlNode2 = xmlDocument.CreateElement("menuitem");
                    xmlNode2.InnerText = checkBox.Name;
                    XmlAttribute xmlAttribute = xmlDocument.CreateAttribute("checked");
                    xmlAttribute.Value = checkBox.Checked.ToString();
                    xmlNode2.Attributes.Append(xmlAttribute);
                    xmlAttribute = xmlDocument.CreateAttribute("position");
                    xmlAttribute.Value = "";
                    foreach (KeyValuePair<int, string> keyValuePair in dictionary)
                    {
                        string[] array = keyValuePair.Value.Split(new char[]
                        {
                    ':'
                        });
                        if (string.Compare((array.Count<string>() == 1) ? array[0].Trim() : array[1].Trim(), checkBox.Text) == 0)
                        {
                            xmlAttribute.Value = keyValuePair.Key.ToString();
                            break;
                        }
                    }
                    xmlNode2.Attributes.Append(xmlAttribute);
                    xmlNode.AppendChild(xmlNode2);
               }
            }
        }
        xmlDocument.Save(Program.pathToMyPluginDir + "\\box.xml");
    }
READ ALSO
Два TASK и одна общая переменная

Два TASK и одна общая переменная

Подскажите пожалуйста, как это лучше организовать

126
Реализация конвеера на технологии WCF

Реализация конвеера на технологии WCF

Есть следующая задача: Реализовать WCF сервис (внутри сервиса крутятся несколько обобщенных очередей в которые помещаются типизированные...

127
Добавление данных в DataGrid в wpf

Добавление данных в DataGrid в wpf

Прошу помочь в следующем вопросе: У меня есть метод, который делает десериализацию данных, после десериализации данные добавляются в список...

112