C# 当组合框值更改时,我应该如何更改文本框的可见性?

C# 当组合框值更改时,我应该如何更改文本框的可见性?,c#,winforms,combobox,textbox,C#,Winforms,Combobox,Textbox,我是编程新手,我正在尝试根据组合框上的选定值更改文本框的值,因为值是数字1到20,并且根据选择,它将是可见文本框的数量。我正在使用已更改的事件选定索引 这是我的密码: private void cbxPIN_SelectedIndexChanged(object sender, EventArgs e) { int pines = Convert.ToInt32(cbxPIN.SelectedItem.ToString()); if (pines == 1) {

我是编程新手,我正在尝试根据组合框上的选定值更改文本框的值,因为值是数字1到20,并且根据选择,它将是可见文本框的数量。我正在使用已更改的事件选定索引

这是我的密码:

private void cbxPIN_SelectedIndexChanged(object sender, EventArgs e)
{
    int pines = Convert.ToInt32(cbxPIN.SelectedItem.ToString());
    if (pines == 1)
    {
        textbox1.visible = true;
    }
    else if (pines == 2)
    {
        textbox1.visible = true;
        textbox2.visible = true;
    }
 ...

    else if (pines == n)
    {
        textbox1.visible = true;
        textbox2.visible = true;
 ...
        textboxn.visible = true;
    }
}
因为组合框上有25个不同的数值,有没有更简单的方法?避免比较每个不同的值


类似循环的东西。

至少,我会这样重写它,以减少重复:

private void cbxPIN_SelectedIndexChanged(object sender, EventArgs e)
{
    int pines = Convert.ToInt32(cbxPIN.SelectedItem.ToString());

    if (pines >= 1)
        textbox1.Visible = true;

    if (pines >= 2)
        textbox2.Visible = true;

    ...

    if (pines >= n)
        textboxn.Visible = true;
}
实际上,我会将所有
TextBox
控件添加到集合中,可能是在构造函数中:

List<TextBox> TextBoxes = new List<TextBox> { textbox1, textbox2, ... textboxn };

您希望使用循环结构。您应该验证要执行的循环数>0和<可用的文本框数,但我将把错误处理留给您

private void cbxPIN_SelectedIndexChanged(object sender, EventArgs e)
{
    int pines = Convert.ToInt32(cbxPIN.SelectedItem.ToString());
    TextBox textBox;
    for (int i = 1; i <= pines; i++)
    {
        // get the control from the form's controls collection by the control name
        textBox = this.Controls["textbox" + pines.ToString()] As TextBox
        textBox.Visible = true;
    }
}
private void cbxPIN\u SelectedIndexChanged(对象发送方,事件参数e)
{
int pines=Convert.ToInt32(cbxPIN.SelectedItem.ToString());
文本框文本框;
对于(int i=1;i
private void cbxPIN_SelectedIndexChanged(object sender, EventArgs e)
{
    int pines = Convert.ToInt32(cbxPIN.SelectedItem.ToString());
    TextBox textBox;
    for (int i = 1; i <= pines; i++)
    {
        // get the control from the form's controls collection by the control name
        textBox = this.Controls["textbox" + pines.ToString()] As TextBox
        textBox.Visible = true;
    }
}