0
我的問題很簡單。我有一個TableLayoutPanel
,其中有不同的行,每個包含控件。防止自動調整大小的TableLayoutPanel行在內容不可見時崩潰
我希望TableLayoutPanel
根據其內容自動調整自身大小,除非控件的Visible
屬性設置爲False
。
發生這種情況時,我想保留該行所在的空格。
當前,當控件的Visible
屬性設置爲False
時,它所在的行摺疊。如果我檢查調試器,我可以看到控件的Height
仍然是24
,而不是0
。
我一直在玩弄不同的設置無濟於事,谷歌搜索的問題似乎只是發現人們問如何實現我正在嘗試做的完全相反。
的簡單例子的完整代碼如下:
Form1.vb的
Option Strict On
Option Explicit On
Option Infer Off
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For i As Integer = 0 To 2
Dim c As New CheckBox()
c.Text = "Checkbox" & i+1
If i = 0
AddHandler c.CheckedChanged, Sub(sender2 As Object, e2 As EventArgs)
If TryCast(sender2, CheckBox).Checked
TryCast(TableLayoutPanel1.Controls(1), CheckBox).Visible = False
Else
TryCast(TableLayoutPanel1.Controls(1), CheckBox).Visible = True
End If
End Sub
End If
TableLayoutPanel1.Controls.Add(c)
Next
End Sub
End Class
Form1.Designer.vb
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel()
Me.SuspendLayout
'
'TableLayoutPanel1
'
Me.TableLayoutPanel1.AutoSize = true
Me.TableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
Me.TableLayoutPanel1.ColumnCount = 1
Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
Me.TableLayoutPanel1.Location = New System.Drawing.Point(13, 13)
Me.TableLayoutPanel1.Name = "TableLayoutPanel1"
Me.TableLayoutPanel1.RowCount = 3
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.TableLayoutPanel1.Size = New System.Drawing.Size(0, 0)
Me.TableLayoutPanel1.TabIndex = 0
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(284, 261)
Me.Controls.Add(Me.TableLayoutPanel1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(false)
Me.PerformLayout
End Sub
Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel
End Class
異常請求。我懷疑你真的*尋找的是TLP的MinimumSize屬性,所以它不能縮小太多。如果不是,則必須添加代碼以在AutoSize和Absolute之間翻轉RowStyle.SizeType屬性。 –