如何在 C# 中同时迭代不同的控件类型(Checkbox 和 TextBox)
How to iterate different control types (Checkbox and TextBox) combined and at the same time in C#
我正在开发一个检查复选框是否被选中的程序。然后使用它的文本 属性 来处理更多的东西。
我添加了 numericUpDown 框,让用户可以输入自己的值。到目前为止,我正在迭代所有复选框并检查是否选中了其中一些。但现在我想迭代复选框,如果其中一个被选中,我想在选中的复选框下方的 numericUpDown 框中获取数字。
一次迭代复选框和数字上下框的最佳方法是什么?
我应该把它们分组吗?或者将它们放入额外的面板中?
到目前为止,这是我如何迭代复选框:
foreach (Control c in panel1.Controls)
{
if ((c is CheckBox) && ((CheckBox)c).Checked)
{
//Do some stuff
}
}
对不起我的英语不好,希望有人能帮忙。谢谢。
正如 Lars 所建议的那样,创建将复选框和 numericUpDown 组合在一起的用户控件是个好主意:
public partial class ToggleNumericControl : UserControl
{
public ToggleNumericControl()
{
InitializeComponent();
}
public override string Text
{
get { return checkBox.Text; }
set { checkBox.Text = value; }
}
public bool Checked
{
get { return checkBox.Checked; }
set { checkBox.Checked = value; }
}
public decimal Value
{
get { return numericUpDown.Value; }
set { numericUpDown.Value = Value; }
}
}
当然,您可以在此处实现其他功能。例如。取消选中复选框时禁用 numericUpDown。
将此类控件放置到您的表单中,然后您可以select这样检查值:
var selectedValues = from tn in panel1.Controls.OfType<ToggleNumericControl>()
where tn.Checked
select tn.Value;
我正在开发一个检查复选框是否被选中的程序。然后使用它的文本 属性 来处理更多的东西。 我添加了 numericUpDown 框,让用户可以输入自己的值。到目前为止,我正在迭代所有复选框并检查是否选中了其中一些。但现在我想迭代复选框,如果其中一个被选中,我想在选中的复选框下方的 numericUpDown 框中获取数字。
一次迭代复选框和数字上下框的最佳方法是什么? 我应该把它们分组吗?或者将它们放入额外的面板中?
到目前为止,这是我如何迭代复选框:
foreach (Control c in panel1.Controls)
{
if ((c is CheckBox) && ((CheckBox)c).Checked)
{
//Do some stuff
}
}
对不起我的英语不好,希望有人能帮忙。谢谢。
正如 Lars 所建议的那样,创建将复选框和 numericUpDown 组合在一起的用户控件是个好主意:
public partial class ToggleNumericControl : UserControl
{
public ToggleNumericControl()
{
InitializeComponent();
}
public override string Text
{
get { return checkBox.Text; }
set { checkBox.Text = value; }
}
public bool Checked
{
get { return checkBox.Checked; }
set { checkBox.Checked = value; }
}
public decimal Value
{
get { return numericUpDown.Value; }
set { numericUpDown.Value = Value; }
}
}
当然,您可以在此处实现其他功能。例如。取消选中复选框时禁用 numericUpDown。
将此类控件放置到您的表单中,然后您可以select这样检查值:
var selectedValues = from tn in panel1.Controls.OfType<ToggleNumericControl>()
where tn.Checked
select tn.Value;