有11个Label和11个TextBox,一个Label对应一个TextBox。这些控件放在一个容器内的。
我在其他地方选择值之后,这11个TextBox有的需要显示有的需要隐藏,效果能实现,但是摆放位置还是默认的位置,位置就乱了。现在想要这些控件自己摆放整齐。找个高手解答。
我试过用流布局(乱了,对应Label和TextBox换行了,达不到要求)
自己写过算法手动定位坐标(但是获得的数组是无序的,对应的Label和TextBox不成对。如果能把数组变成想要的顺序问题就不大了)

解决方案 »

  1.   

    一个Panel可以放一个Label对应一个TextBox。
    11个Panel用一个FlowLayoutPanel来组织。
      

  2.   

    手动定位肯定是可行的,但是从容器里面获得的控件数组是无需的啊
    你怎么知道那个Label是和那个TextBox是对应的呢
    这样显示的时候还不是会错乱开来啊
      

  3.   

    你的意思是把成对的Label和TextBox弄成一个小组
    这样再使用FlowLayoutPanel控件来组织
    这我也想过
    但是这系统保存的时候,传的是容器,并且如其名称是特许命名,方便保存的时候取值,所以在保存的时候不好处理,框架已经那样了。我也没办法
      

  4.   

    hashtable行么?label=key,text=value
      

  5.   

    TextBox重写过,还有那些控件都在构造函数里面复制处理过
    动态生成不行,那样太麻烦了
      

  6.   

    没试过,现在打算使用最蠢的办法
    把那11个Label和11个TextBox按照对应的格式放在数组中
    只不过数组很长,不美观。显得很笨拙
      

  7.   


    你可以手动定义label和textbox的ID,如:l1<-->t1 放入pane1;l2<-->t2 放入pane2;l3<-->t3 放入pane3这样我们只需要控件panel 为show()或hide()就行了。
      

  8.   


    把属性转发给内部存储
    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; }
       }
    }另:传容器不是很好的设计(现在你发现它依赖于具体的窗体容器了吧)。
      

  9.   

    给控件取个Name,L1.name="1" T1.Name="1"7楼跟2楼的都可以啊
      

  10.   

    用css做
    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>
      

  11.   

    我觉得绑定肯定是可行的,tag属性的,都可以拿来用
      

  12.   

    tag属性没试过
    关键是能搞定容器获得的数组里面的值,是按照我想要的顺序排列的就行
    其他什么的都好说
      

  13.   

    用这个 FlowLayoutPanel panel
    最好把Label 和 TextBox 做成一个用户控件....
      

  14.   

    把Label 和 TextBox 绑在一起做成一个用户控件,你看他怎么错位....