是的,所以我有13个带有相应标签的文本框,这些标签是在用户从不同的表单中确定名称后分配的(由'添加字段...'按钮实例化)。当用户希望删除具有先前输入数据的文本框时会出现此问题,因为这会导致文本框和标签最初由以下图像显示的空白空间:
我的问题是:我如何制作它,以便当用户选择删除文本框时,其后面的文本框标签对将替换已删除的文本框并相应地移动剩余的文本框。
设计师中的文本框标签对:
过去几天我一直在密集地思考这个问题,并得出结论,凭借我目前对C#的了解,我只能用一些可怕的if-statements来解决这个问题(谈论数百 - 数千这里)。任何和所有的帮助将不胜感激!
第一个文本框 - 标签对的X按钮上的当前代码:
private void xButton1_Click(object sender, EventArgs e)
{
label14.Text = "";
textBox1.Text = "";
if (label14.Text.Equals(""))
{
label14.Visible = false;
textBox1.Visible = false;
xButton.Visible = false;
label14.Text = "";
textBox1.Text = "";
}
if (!textBox2.Text.Equals(""))
{
label14.Text = label15.Text;
textBox1.Text = textBox2.Text;
}
if (!textBox2.Text.Equals("") && (textBox3.Text.Equals("")))
{
label15.Visible = false;
textBox2.Text = "";
textBox2.Visible = false;
xButton2.Visible = false;
}
}
答案 0 :(得分:0)
你能做的一件简单事就是给你所有的动态"控件(标签,文本框,按钮)在Tag
属性中的值类似(在我的示例中,我使用字符串"dynamic"
表示所有控件Tags
。这使您可以查询它们容易。
接下来,您可以遵循这样的逻辑:无论何时删除某些控件,您都会将删除的控件下方的所有控件向上移动一段距离,该距离等于要删除的控件的高度以及控件之间的填充。
例如,当用户点击X
按钮时,由于您知道要删除的控件底部的值,因此您可以找到所有匹配{{1}的控件顶部大于Tag
按钮底部的属性,您可以将它们向上移动。
以下是一个示例(假设您的所有x
按钮都映射到同一个点击事件):
X