Winforms VBA表单能否具有流布局?
我猜这是不可能的,但事情是这样的 Java和最近的.Net更新都支持流布局,布局管理器会重新安排表单控件以适应可用空间 我只见过VBA和WinForms使用硬编码的绝对位置Winforms VBA表单能否具有流布局?,winforms,ms-access,vba,layout,Winforms,Ms Access,Vba,Layout,我猜这是不可能的,但事情是这样的 Java和最近的.Net更新都支持流布局,布局管理器会重新安排表单控件以适应可用空间 我只见过VBA和WinForms使用硬编码的绝对位置 是否有人遇到过此上下文中的流布局管理器?WinForms当然有和 有一个。Access 2007和更高版本通过锚定实现此功能: 如果您想在早期版本中执行此操作,您可以使用表单的On Resize事件来滚动自己的表单。我有一个这样布置的表单。我所有的控件都是根据它们的垂直位置顺序命名的:txt_R1、txt_R2、txt_R3
是否有人遇到过此上下文中的流布局管理器?WinForms当然有和
有一个。Access 2007和更高版本通过锚定实现此功能:
如果您想在早期版本中执行此操作,您可以使用表单的On Resize事件来滚动自己的表单。我有一个这样布置的表单。我所有的控件都是根据它们的垂直位置顺序命名的:txt_R1、txt_R2、txt_R3等等 加载表单时,它的外观如下所示: 当我更新组合框时,执行以下代码:
Dim s_tier As String
Dim s_rate As String
Dim s_lbl_Rate As String
Dim s_lbl_Tier As String
Dim s_obj As String
Me.TXT_Min.Visible = True
Me.LBL_MIN.Visible = True
Me.TXT_Min.Value = 0
Me.TXT_Scale.Visible = True
Me.lbl_Scale.Visible = True
Me.TXT_Scale.Value = 0
Me.txt_MinMax.Visible = True
Me.lbl_MinMax.Visible = True
Me.txt_MinMax.Value = 0
s_tier = "TXT_T"
s_rate = "TXT_R"
s_lbl_Rate = "LBL_R"
s_lbl_Tier = "LBL_T"
For i = 1 To numActive
'Tier Text Box
s_obj = s_tier & i
Me(s_obj).Visible = True
Me(s_obj).Value = "NULL"
'Tier Label
s_obj = s_lbl_Tier & i
Me(s_obj).Visible = True
'Rate Text Box
s_obj = s_rate & i
Me(s_obj).Visible = True
Me(s_obj).Value = "NULL"
'Rate Label
s_obj = s_lbl_Rate & i
Me(s_obj).Visible = True
Next i
'set last tier to infinite, since last tier typically goes on forever
s_obj = s_tier & numActive
Me(s_obj).Value = ChrW(&H221E)
Me(s_obj).FontSize = 16
'Make Test button visible and move to appropriate place
s_obj = s_lbl_Tier & (numActive + 1)
Me.Btn_Test.Top = Me(s_obj).Top
Me.Btn_Test.Left = Me(s_obj).Left
Me.Btn_Test.Visible = True
s_obj = s_tier & (numActive + 1)
'Make Test button visible and move to appropriate place
Me.btn_SQL.Top = Me(s_obj).Top
Me.btn_SQL.Left = Me(s_obj).Left
Me.btn_SQL.Visible = True
Me.Refresh
如果在组合框中选择了“1”,则刷新的表单现在看起来如下所示:
。。。或者如果在组合框中选择了“2”:
。。。或者如果在组合框中选择了“3”:
我的方法的关键是使用顺序命名约定作为利用
for i = 1 to numactive
一段代码。循环结束后,所有静态控件都可见。我可以在numactive变量中添加1来确定第一个不可见控件的位置,并将我的“浮动”控件锚定到该位置
可以调整此方法,以使用偏移(而不是其他控件的位置)将任何控件实际放置到任何位置。让你的想象力尽情发挥吧 我很感激这在.Net中是可能的——尽管它似乎很少被使用。但是你知道VBA解决方案吗?啊,这是我需要注意的新功能,谢谢。现在,我想知道我的客户何时会“跃进”并采用Access 2007;-)