Beispiel #1
0
        private CheckedListBox GetCheckBoxList()
        {
            CheckedListBox chkboxList = new CheckedListBox();

            chkboxList.CheckOnClick = true;
            if (Options.Options.ContainsKey("options"))
            {
                var os = Options.Options["options"];
                if (os.GetType() == typeof(string))
                {
                    foreach (string s in os.ToString().Split(",|".ToCharArray()))
                    {
                        chkboxList.Items.Add(s);
                    }
                }
                else
                {
                    List <OptionItem> items = os.GetType() == typeof(ArrayList) ? OptionItem.GetList((ArrayList)os) : os as List <OptionItem>;
                    chkboxList.Items.AddRange(items.ToArray());
                }
            }
            //数据修改事件
            chkboxList.SelectedValueChanged += (o, ev) => {
                List <string> val = new List <string>();
                foreach (var item in chkboxList.CheckedItems)
                {
                    if (item.GetType() == typeof(string))
                    {
                        val.Add(item.ToString());
                    }
                    else
                    {
                        OptionItem oi = item as OptionItem;
                        val.Add(oi.Key);
                    }
                }
                Value = string.Join(",", val.ToArray());
                OnValueChanged(this, ev);
            };
            return(chkboxList);
        }
Beispiel #2
0
        private ComboBox GetComboBox()
        {
            ComboBox cblist = new ComboBox();

            cblist.DropDownStyle = ComboBoxStyle.DropDownList;
            if (Options.Options.ContainsKey("options"))
            {
                var os = Options.Options["options"];
                if (os.GetType() == typeof(string))
                {
                    foreach (string s in os.ToString().Split(",|".ToCharArray()))
                    {
                        cblist.Items.Add(s);
                    }
                }
                else
                {
                    List <OptionItem> items = os.GetType() == typeof(ArrayList) ? OptionItem.GetList((ArrayList)os) : os as List <OptionItem>;
                    cblist.Items.AddRange(items.ToArray());
                }
            }
            //数据修改事件
            cblist.SelectedValueChanged += (o, ev) => {
                var    item = cblist.SelectedItem;
                string val  = "";
                if (item.GetType() == typeof(string))
                {
                    val = item.ToString();
                }
                else
                {
                    OptionItem oi = item as OptionItem;
                    val = oi.Key;
                }
                Value = val;
                OnValueChanged(this, ev);
            };
            return(cblist);
        }
Beispiel #3
0
        private Panel GetRadioButtons()
        {
            Panel pan = new Panel();

            if (Options.Options.ContainsKey("options"))
            {
                var os = Options.Options["options"];
                List <RadioButton> rblist = new List <RadioButton>();
                //获取选择项
                //字符串,以,或|切分
                if (os.GetType() == typeof(string))
                {
                    foreach (string s in os.ToString().Split(",|".ToCharArray()))
                    {
                        RadioButton rbtn = new RadioButton();
                        rbtn.Text = s;
                        rbtn.Tag  = s;
                        rblist.Add(rbtn);
                    }
                }
                //数据,使用OptionItem对像
                else
                {
                    List <OptionItem> items = os.GetType() == typeof(ArrayList) ? OptionItem.GetList((ArrayList)os) : os as List <OptionItem>;
                    foreach (OptionItem item in items)
                    {
                        RadioButton rbtn = new RadioButton();
                        rbtn.Text = item.Name;
                        rbtn.Tag  = item.Key;
                        rblist.Add(rbtn);
                    }
                }
                pan.Tag = rblist;
                List <Panel> panlist = new List <Panel>();
                int          col     = rblist.Count;
                //默认为自动调整尺寸
                bool autosize = true;
                //计算一行有几列
                if (Options.Options.ContainsKey("columns"))
                {
                    //指定列后,列宽度为平均宽度
                    autosize = false;
                    col      = (int)Options.Options["columns"];
                }
                //添加控件
                for (int i = 0, row = -1; i < rblist.Count; i++)
                {
                    //添加行
                    if (i % col == 0)
                    {
                        row++;
                        panlist.Add(new Panel());
                        panlist[row].Padding = new Padding(0, (i == 0 ? 0 : formOptions.VerticalPadding), 0, 0);
                        int lineheight = rblist[0].Height;
                        panlist[row].Height = lineheight + (i == 0 ? 0 : formOptions.VerticalPadding);
                    }
                    //修改数据
                    rblist[i].CheckedChanged += (o, ev) => {
                        RadioButton rbtn = o as RadioButton;
                        Value = rbtn.Tag;
                        if (rbtn.Checked)
                        {
                            foreach (RadioButton tmp in rblist)
                            {
                                if (tmp.Tag != rbtn.Tag)
                                {
                                    tmp.Checked = false;
                                }
                            }
                        }
                        OnValueChanged(this, ev);
                    };
                    //设置样式.
                    rblist[i].Dock     = DockStyle.Left;
                    rblist[i].AutoSize = autosize;
                    panlist[row].Controls.Add(rblist[i]);
                    rblist[i].BringToFront();
                }
                int h = 0;
                //添加行到主控件
                foreach (var op in panlist)
                {
                    Panel p = op as Panel;
                    if (!autosize)
                    {
                        p.SizeChanged += (o, ev) => {
                            foreach (var oc in p.Controls)
                            {
                                RadioButton rbtn = oc as RadioButton;
                                rbtn.Width = p.Width / col;
                            }
                        };
                    }
                    pan.Controls.Add(p);
                    p.Dock = DockStyle.Top;
                    p.BringToFront();
                    h += p.Height;
                }
                pan.Height = h;
            }
            return(pan);
        }
Beispiel #4
0
        private Panel GetCheckBoxs()
        {
            Panel pan = new Panel();

            if (Options.Options.ContainsKey("options"))
            {
                var             os      = Options.Options["options"];
                List <CheckBox> cbxlist = new List <CheckBox>();
                //获取选择项
                //字符串,以,或|切分
                if (os.GetType() == typeof(string))
                {
                    foreach (string s in os.ToString().Split(",|".ToCharArray()))
                    {
                        CheckBox cbx = new CheckBox();
                        cbx.Text = s;
                        cbx.Tag  = s;
                        cbxlist.Add(cbx);
                    }
                }
                //数据,使用OptionItem对像
                else
                {
                    List <OptionItem> items = os.GetType() == typeof(ArrayList) ? OptionItem.GetList((ArrayList)os) : os as List <OptionItem>;
                    foreach (OptionItem item in items)
                    {
                        CheckBox cbx = new CheckBox();
                        cbx.Text = item.Name;
                        cbx.Tag  = item.Key;
                        cbxlist.Add(cbx);
                    }
                }
                pan.Tag = cbxlist;
                List <Panel> panlist = new List <Panel>();
                int          col     = cbxlist.Count;
                //默认为自动调整尺寸
                bool autosize = true;
                //计算一行有几列
                if (Options.Options.ContainsKey("columns"))
                {
                    //指定列后,列宽度为平均宽度
                    autosize = false;
                    col      = (int)Options.Options["columns"];
                }
                //添加控件
                for (int i = 0, row = -1; i < cbxlist.Count; i++)
                {
                    //添加行
                    if (i % col == 0)
                    {
                        row++;
                        panlist.Add(new Panel());
                        panlist[row].Padding = new Padding(0, (i == 0?0: formOptions.VerticalPadding), 0, 0);
                        int lineheight = cbxlist[0].Height;
                        panlist[row].Height = lineheight + (i == 0 ? 0 : formOptions.VerticalPadding);
                    }
                    //修改数据
                    cbxlist[i].CheckedChanged += (o, ev) => {
                        List <string> val = new List <string>();
                        foreach (var oc in cbxlist)
                        {
                            CheckBox cbx = oc as CheckBox;
                            if (cbx.Checked)
                            {
                                val.Add(cbx.Tag.ToString());
                            }
                        }
                        Value = string.Join(",", val.ToArray());
                        OnValueChanged(this, ev);
                    };
                    //设置样式
                    cbxlist[i].Dock     = DockStyle.Left;
                    cbxlist[i].AutoSize = autosize;
                    panlist[row].Controls.Add(cbxlist[i]);
                    cbxlist[i].BringToFront();
                }
                int h = 0;
                //添加行到主控件
                foreach (var op in panlist)
                {
                    Panel p = op as Panel;
                    if (!autosize)
                    {
                        p.SizeChanged += (o, ev) => {
                            foreach (var oc in p.Controls)
                            {
                                CheckBox cbx = oc as CheckBox;
                                cbx.Width = p.Width / col;
                            }
                        };
                    }
                    pan.Controls.Add(p);
                    p.Dock = DockStyle.Top;
                    p.BringToFront();
                    h += p.Height;
                }
                pan.Height = h;
            }
            return(pan);
        }