ボタンを押すと、すべてのテキストボックス、コンボボックスをクリアし、numericupdown をゼロにリセットしたいと考えています。
それを行う最良の方法は何ですか。誰かがこのqをばかげていると思ったらごめんなさい。
WinForms を使用している場合は、次を使用して、必要なすべてのコントロールをクリアできます。
public void ClearTextBoxes(Control control)
{
foreach (Control c in control.Controls)
{
if (c is TextBox)
{
if (!(c.Parent is NumericUpDown))
{
((TextBox)c).Clear();
}
}
else if (c is NumericUpDown)
{
((NumericUpDown)c).Value = 0;
}
else if (c is ComboBox)
{
((ComboBox)c).SelectedIndex = 0;
}
if (c.HasChildren)
{
ClearTextBoxes(c);
}
}
}
それを有効にするには、コード ビハインドで次のようにフォームにボタンを追加するだけです。
private void button1_Click(object sender, EventArgs e)
{
ClearTextBoxes(this);
}
public void ClearTextBoxes(Control parent)
{
foreach(Control c in parent.Controls)
{
ClearTextBoxes(c);
if(c is TextBox) c.Text = string.Empty;
if(c is ComboBox) c.SelectedIndex = 0;
}
}
また
public void ClearTextBoxes(Control ctrl)
{
if (ctrl != null)
{
foreach (Control c in ctrl.Controls)
{
if (c is TextBox)
{
((TextBox)c).Text = string.empty;
}
if(c is ComboBox)
{
((ComboBox)c).SelectedIndex = 0;
}
ClearTextBoxes(c);
}
}
}
これが WinForms の場合、すべてのコントロールを反復処理してリセットします
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
((TextBox)c).Text = "";
}
else if (c is ComboBox)
{
((ComboBox)c).SelectedIndex = 0;
}
else if (c is NumericUpDown)
{
((NumericUpDown)c).Value= 0;
}
}