有11个Label和11个TextBox,一个Label对应一个TextBox。这些控件放在一个容器内的。
我在其他地方选择值之后,这11个TextBox有的需要显示有的需要隐藏,效果能实现,但是摆放位置还是默认的位置,位置就乱了。现在想要这些控件自己摆放整齐。找个高手解答。
我试过用流布局(乱了,对应Label和TextBox换行了,达不到要求)
自己写过算法手动定位坐标(但是获得的数组是无序的,对应的Label和TextBox不成对。如果能把数组变成想要的顺序问题就不大了)
我在其他地方选择值之后,这11个TextBox有的需要显示有的需要隐藏,效果能实现,但是摆放位置还是默认的位置,位置就乱了。现在想要这些控件自己摆放整齐。找个高手解答。
我试过用流布局(乱了,对应Label和TextBox换行了,达不到要求)
自己写过算法手动定位坐标(但是获得的数组是无序的,对应的Label和TextBox不成对。如果能把数组变成想要的顺序问题就不大了)
11个Panel用一个FlowLayoutPanel来组织。
你怎么知道那个Label是和那个TextBox是对应的呢
这样显示的时候还不是会错乱开来啊
这样再使用FlowLayoutPanel控件来组织
这我也想过
但是这系统保存的时候,传的是容器,并且如其名称是特许命名,方便保存的时候取值,所以在保存的时候不好处理,框架已经那样了。我也没办法
动态生成不行,那样太麻烦了
把那11个Label和11个TextBox按照对应的格式放在数组中
只不过数组很长,不美观。显得很笨拙
你可以手动定义label和textbox的ID,如:l1<-->t1 放入pane1;l2<-->t2 放入pane2;l3<-->t3 放入pane3这样我们只需要控件panel 为show()或hide()就行了。
把属性转发给内部存储
class MyContainer :Panel
{
public string Lable1 { get {return this.Panel1.Label1.Text; } }
public string Text1
{
get {return this.Panel1.Textbox1.Text;}
set {this.Panel1.Textbox1.Text = value; }
}
}另:传容器不是很好的设计(现在你发现它依赖于具体的窗体容器了吧)。
form fieldset {
margin-bottom: 10px;
border: 1px solid #666666;
}
form legend {
padding: 0 2px;
font-weight: bold;
}
form label {
display: inline-block;
line-height: 1.8;
vertical-align: top;
}
form fieldset ol {
margin: 0;
padding: 0;
}
form fieldset li {
list-style: none;
padding: 5px;
margin: 0;
}
form fieldset fieldset {
border: none;
margin: 3px 0 0;
}
form fieldset fieldset legend {
padding: 0 0 5px;
font-weight: normal;
}
form fieldset fieldset label {
display: block;
width: auto;
}
form em {
font-weight: bold;
font-style: normal;
color: #f00;
}
form label {
width: 120px; /* Width of labels */
}
form fieldset fieldset label {
margin-left: 123px; /* Width plus 3 (html space) */
}<fieldset>
<legend>个人信息</legend>
<ol>
<li>
<label for="name">姓名<em>*</em></label>
<asp:TextBox runat="server" ID="TextBox1" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ControlToValidate="TextBox1">*必须输入您的姓名</asp:RequiredFieldValidator>
</li>
<li>
<label for="address1">公司名称<em>*</em></label>
<asp:TextBox runat="server" ID="TextBox2" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server" ControlToValidate="TextBox2">*必须输入您的公司名称</asp:RequiredFieldValidator>
</li>
</ol>
</fieldset>
关键是能搞定容器获得的数组里面的值,是按照我想要的顺序排列的就行
其他什么的都好说
最好把Label 和 TextBox 做成一个用户控件....