private void FillOptions()
        {
            var list = new DevOptions();
            var row  = 0;

            OptionPanel.Controls.Clear();
            foreach (var option in list)
            {
                var lbl = new Label()
                {
                    AutoSize = true, TextAlign = ContentAlignment.MiddleLeft
                };

                switch (option.Type)
                {
                case "System.Boolean":
                    var chk = new CheckBox()
                    {
                        Text      = option.Label,
                        Checked   = Boolean.Parse(option.Recommend),
                        Tag       = new string[] { option.Area, option.Name },
                        AutoSize  = true,
                        TextAlign = ContentAlignment.MiddleLeft
                    };
                    toolTip1.SetToolTip(chk, option.Desc);
                    OptionPanel.Controls.Add(lbl);
                    OptionPanel.Controls.Add(chk);
                    OptionPanel.SetRow(lbl, row);
                    OptionPanel.SetColumn(lbl, 0);
                    OptionPanel.SetRow(chk, row);
                    OptionPanel.SetColumn(chk, 1);
                    break;

                case "System.Int32":
                    var num = new NumericUpDown()
                    {
                        Value    = int.Parse(option.Recommend),
                        Tag      = new string[] { option.Area, option.Name },
                        AutoSize = true,
                    };
                    toolTip1.SetToolTip(num, option.Desc);
                    lbl.Text = option.Label;
                    OptionPanel.Controls.Add(lbl);
                    OptionPanel.Controls.Add(num);
                    OptionPanel.SetRow(lbl, row);
                    OptionPanel.SetColumn(lbl, 0);
                    OptionPanel.SetRow(num, row);
                    OptionPanel.SetColumn(num, 1);
                    break;

                default:
                    break;
                }

                row += 1;
                OptionPanel.RowCount = row;
            }
        }
        private DevOptions GetOptions()
        {
            var retVal = new DevOptions();

            System.Diagnostics.Debug.WriteLine(OptionPanel.Controls.Count);
            foreach (Control control in OptionPanel.Controls)
            {
                var type = control.GetType().ToString();
                if (control.Tag != null)
                {
                    System.Diagnostics.Debug.WriteLine(type + ":" + string.Join(",", ((string[])control.Tag)));
                }
                DevOption item;
                switch (type)
                {
                case "System.Windows.Forms.CheckBox":
                    var chk = (CheckBox)control;
                    item       = retVal.First(f => f.Name == ((string[])chk.Tag)[1]);
                    item.Value = chk.Checked.ToString();
                    System.Diagnostics.Debug.WriteLine(item.Name + ":" + chk.Checked.ToString());
                    retVal.Add(item);
                    break;

                case "System.Windows.Forms.NumericUpDown":
                    var num = (NumericUpDown)control;
                    item       = retVal.First(f => f.Name == ((string[])num.Tag)[1]);
                    item.Value = num.Value.ToString();
                    System.Diagnostics.Debug.WriteLine(item.Name + ":" + num.Value.ToString());
                    retVal.Add(item);
                    break;

                default:
                    System.Diagnostics.Debug.WriteLine(control.Name + ":" + type + ":" + control.Tag?.ToString());
                    break;
                }
            }
            return(retVal);
        }