关于TableLayoutPanel的用法,有几个问题请教:
1.如果动态添加一行?
2.如果删除一行?
3.添加一行或删除时,如何不发生闪动?
4.如果知道当前获取焦点是的哪一行?
5.最后一行的空白如何处理?

解决方案 »

  1.   

    http://topic.csdn.net/t/20061219/15/5241258.html这个贴子也无人结呀。
      

  2.   

    5.最后一行的空白如何处理?解决办法是控件自适应长度: 
    1〉添加一个Panel: AutoScroll为True
    2 〉添加一个TableLayoutPanel到Panel上面:AutoScroll为False、 AutoSize为True、 Dock为Top
      

  3.   

    1.如果动态添加一行?
    代码如下:
    tlpMastField.RowCount = tlpMastField.RowCount + 1;
    tlpMastField.RowStyles.Add(new RowStyle(System.Windows.Forms.SizeType.Absolute, 25f));int rowIndex = tlpMastField.RowCount - 1;            //FieldName
                TextBox ttbxFieldName = new TextBox();
                ttbxFieldName.Text = fieldName; //显示内容
                ttbxFieldName.Name = "ttbxFd" + fieldName + rowIndex; //名称
                ttbxFieldName.Multiline = true; //可显示多行                   
                ttbxFieldName.BorderStyle = BorderStyle.Fixed3D; //边框类型
                ttbxFieldName.BackColor = SystemColors.InactiveCaptionText; //背景颜色            
                ttbxFieldName.Dock = DockStyle.Fill; //完全占据父容器
                ttbxFieldName.TextAlign = HorizontalAlignment.Left; //文本对齐方式
                tlpMastField.Controls.Add(ttbxFieldName, 0, rowIndex); //添加到TableLayoutPanel
      

  4.   

    3.添加一行或删除时,如何不发生闪动?
                //避免闪动,布局先挂起
                tlpMastField.SuspendLayout();           //添加行
               ... ...            //避免闪动,提交布局
                tlpMastField.ResumeLayout();    感觉没效果,待大牛解释... ...
      

  5.   

    tlpMastField.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(tlpDir, true, null);
      

  6.   

    tlpMastField.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(tlpMastField, true, null);
    纠正一下.