我有一个表单,用户可以选择访客数量。我想隐藏第二种形式中不需要的额外文本框。
示例用户在form2上的form1上选择8个guest虚拟机我想隐藏textbox9和textbox10,因此只显示文本框1-8,他们需要填写访客姓名。
在Visual Studio中使用Windows Forms C#实现此目的的最佳方法是什么?
这是一个例子,但似乎非常重复
private void DisplayTextBoxs()
{
if (xBillInformationForm.dGuestNumber == 1)
{
xCustomer1Label.Visible = true;
xCustomer1TextBox.Visible = true;
}
if (xBillInformationForm.dGuestNumber == 2)
{
xCustomer1Label.Visible = true;
xCustomer1TextBox.Visible = true;
xCustomer2Label.Visible = true;
xCustomer2TextBox.Visible = true;
}
if (xBillInformationForm.dGuestNumber == 3)
{
xCustomer1Label.Visible = true;
xCustomer1TextBox.Visible = true;
xCustomer2Label.Visible = true;
xCustomer2TextBox.Visible = true;
xCustomer3Label.Visible = true;
xCustomer3TextBox.Visible = true;
}
if (xBillInformationForm.dGuestNumber == 4)
{
xCustomer1Label.Visible = true;
xCustomer1TextBox.Visible = true;
xCustomer2Label.Visible = true;
xCustomer2TextBox.Visible = true;
xCustomer3Label.Visible = true;
xCustomer3TextBox.Visible = true;
xCustomer4Label.Visible = true;
xCustomer4TextBox.Visible = true;
}
}
答案 0 :(得分:0)
对于有限的最大访客人数,您可以
Textbox2.Visible = userChoice >= 2;
Textbox3.Visible = userChoice >= 3;
等
对于大量的客人/文本框,这变得笨拙。
答案 1 :(得分:0)
如果动态构建表单,可以将所有文本框放在一个数组中并循环遍历它们。但除非你发布你的代码,否则我们无法给出一个好的答案
TextBow[10]textboxes;
textBoxes[0] = your first textbox
textBoxes[1] = you second textbox
For(int i = userChoice -1; i < textBoxes.Length; i++){
textBoxes[i].Visible = false;
}
所以我的代码从userChoice开始,遍历数组中的所有文本框
答案 2 :(得分:0)
尝试循环
var quantity = convert.ToInt32(xBillInformationForm.dGuestNumber);
<table>
for(int i=1, i<=quantity; i++)
{
<tr>
<td>
<label id="name">Name</label>
<input id="address" type="text" placeholder="address" />
</td>
</tr>
}
</table>
此外,您可以添加两个按钮或链接,如“添加访客”和第二种形式的“删除访客”,并通过jquery处理它