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