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); }
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); }
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); }
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); }