無理だとは思いますが、これでいいのです。
Java および最近の .Net アップデートでは、フロー レイアウトが可能です。フロー レイアウトでは、レイアウト マネージャーがフォーム コントロールを再配置して、使用可能なスペースに収まるようにします。
ハードコードされた絶対位置を使用する VBA と 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 を追加して、最初の非表示コントロールがどこにあるかを判断し、「フローティング」コントロールをその位置に固定します。
このメソッドを微調整して、他のコントロールの位置の代わりにオフセットを使用して、任意のコントロールを任意の位置に実際に配置できます。あなたの想像力を暴走させましょう!
もちろん、WinFormsにはFlowLayoutPanelとTableLayoutPanelがあります..
MSDN に Winforms の AutoLayoutの例があります。