不一致的TableLayoutPanel调整大小行为

时间:2015-03-09 12:29:23

标签: vb.net tablelayoutpanel

我有两个TableLayout面板,一个放在另一个面板上。它们各自具有相同数量的列(在运行时创建),彼此对齐。它们没有停靠,都锚定在父TLP中。 当我调整表单大小时,大多数时候两个TLP都会调整大小并准确排列。如果我多次调整大小(通常在5到10之间),则TLP会重新调整大小不同步,并且列不再排列。如果我再次调整大小,问题通常会消失。

screenshot of how the error displays

Layout_Dates不包含任何控件,而是绘制它。 Layout_Calendar被绘制,可能包含许多在运行时添加的控件。 CellPaint事件完成且没有错误。

TLP填充了这样的列:

    Layout_Calendar.ColumnStyles.Clear()

    Layout_Dates.Width = Layout_Calendar.Width
    Layout_Dates.ColumnStyles.Clear()

    For i = 0 To MyColumnCount - 1
        Layout_Calendar.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, DayPercent))
        Layout_Dates.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, DayPercent))
    Next

    ' make last column autosize
    Layout_Calendar.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.AutoSize))
    Layout_Dates.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.AutoSize))

    Layout_Calendar.ColumnCount = Layout_Calendar.ColumnStyles.Count
    Layout_Dates.ColumnCount = Layout_Dates.ColumnStyles.Count

我有两个,因为一个垂直滚动,另一个不滚动。

对于两个面板都没有触发异常,我在我的手机事件周围'尝试捕捉'语句。

我已经尝试在运行时检查列宽,但这些是%,并且不会更改。

我把它放在resize事件的形式中:

    Layout_Dates.PerformLayout()
    Layout_Calendar.PerformLayout()

有谁知道如何: a)防止这种情况发生? b)以编程方式确定这是在运行时发生的? c)什么时候处理它?<​​/ p>

0 个答案:

没有答案