C# 组合框下拉列表项类型
本文关键字:类型 下拉列表 组合 | 更新日期: 2023-09-27 18:33:15
我有一个包含 16 个组合框的窗体,每个组合框的 DropDownStyle
属性设置为 DropDownList
。我正在尝试设置表单,以便每个控件都显示其第一个预定义值:
private void Form1_Load(object sender, EventArgs e)
{
foreach (ComboBox DropDown in this.Controls.OfType<ComboBox>())
DropDown.SelectedIndex = 0;
}
此代码不起作用,尽管单独分配每个项目可以。知道为什么吗?
我的 WinForm 体验有点生疏,但如果我没记错的话,this.Controls
只会直接在主窗体下为您带来这些控件。如果您有任何子控件(如分组框),它们将位于该分组框的 .Controls
.
您可以显式迭代 Groupbox 的控件,也可以使用递归遍历窗体的所有子控件,如此处所示。
您必须检测组合框的控件及其类型...这意味着您必须处理嵌套循环来检测控件
foreach (Control MyCtrl in this.Controls)
{
DoAllRichTextBoxes(MyCtrl);
}
void DoAllRichTextBoxes(Control control)
{
ComboBox Cmb = control as ComboBox;
TextBox TxtBx = control as TextBox;
if (Cmb == null && TxtBx == null)
{
// deal with nested controls
foreach (Control c in control.Controls) DoAllRichTextBoxes(c);
}
if (Cmb != null)
{
Cmb.GotFocus += new EventHandler(this.Tb_GotFocus);
Cmb.LostFocus += new EventHandler(this.Tb_LostFocus);
Cmb.KeyDown += new KeyEventHandler(this.VehComn_KeyDown);
Cmb.SelectedValueChanged += new EventHandler(this.AllCombos_SelectedValueChanged);
}
if (TxtBx != null)
{
TxtBx.GotFocus += new EventHandler(this.Tb_GotFocus);
TxtBx.LostFocus += new EventHandler(this.Tb_LostFocus);
TxtBx.KeyPress += new KeyPressEventHandler(this.TbCmb_KeyPress);
TxtBx.KeyDown += new KeyEventHandler(this.VehComn_KeyDown);
}
}