Changing component size on windows resize

I can't remember this one from my old days of Windows programming. I want to change the width of an object when the form size is changed. How do you do this?
[158 byte] By [codefund.com] at [2007-12-16]
# 1
Check out the Anchor property of the control. This allows you to anchor an edge of a control to the edge of the form, resizing as you resize the form.
codefund.com at 2007-9-8 > top of Msdn Tech,Windows Forms,Windows Forms General...
# 2
Ken,

Thanks for the post. It was already set to the top left and still does not work. Any other clue?

Jason

codefund.com at 2007-9-8 > top of Msdn Tech,Windows Forms,Windows Forms General...
# 3
Anchor to the side you want to resize. If you want to be able to resize the form, don't you normally resize the right and bottom edges? That's where you want to dock.
codefund.com at 2007-9-8 > top of Msdn Tech,Windows Forms,Windows Forms General...
# 4
Ken, the anchor control just anchors my control on the page. It doesn't allow the resize. I docked my control in the right and bottom edges and it appeared towards the bottom of my page. Am I misunderstanding something?

I am trying to change just my control width on a resize. If the form is maximized, I want my control to widen so much. If the form is made smaller, I want it to shrink a bit.

How can this be done?

codefund.com at 2007-9-8 > top of Msdn Tech,Windows Forms,Windows Forms General...
# 5
Try this form. Shows off most of the Anchor property features.

Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New()
MyBase.New()

'This call is required by the Windows Form Designer.
InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
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.
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
Friend WithEvents TextBox2 As System.Windows.Forms.TextBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button()
Me.TextBox1 = New System.Windows.Forms.TextBox()
Me.TextBox2 = New System.Windows.Forms.TextBox()
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Anchor = (System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right)
Me.Button1.Location = New System.Drawing.Point(176, 144)
Me.Button1.Name = "Button1"
Me.Button1.TabIndex = 0
Me.Button1.Text = "Button1"
'
'TextBox1
'
Me.TextBox1.Anchor = ((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right)
Me.TextBox1.Location = New System.Drawing.Point(8, 8)
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(240, 20)
Me.TextBox1.TabIndex = 1
Me.TextBox1.Text = "TextBox1"
'
'TextBox2
'
Me.TextBox2.Anchor = (((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right)
Me.TextBox2.Location = New System.Drawing.Point(8, 32)
Me.TextBox2.Multiline = True
Me.TextBox2.Name = "TextBox2"
Me.TextBox2.Size = New System.Drawing.Size(240, 104)
Me.TextBox2.TabIndex = 2
Me.TextBox2.Text = "TextBox2"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(256, 174)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.TextBox2, Me.TextBox1, Me.Button1})
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub

#End Region

End Class

codefund.com at 2007-9-8 > top of Msdn Tech,Windows Forms,Windows Forms General...
# 6
Ken,

Thanks for the sample. That is what I did. Here is my code block: Me.listConfig = New System.Windows.Forms.ListBox()
Me.listConfig.Anchor = AnchorStyles.Bottom Or AnchorStyles.Right
Me.listConfig.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.listConfig.HorizontalScrollbar = True
Me.listConfig.Location = New System.Drawing.Point(8, 8)
Me.listConfig.Name = "listConfig"
Me.listConfig.Size = New System.Drawing.Size(576, 236)
Me.listConfig.TabIndex = 0Do you know why my code is keeping the control to the bottom instead of spanning it across?

Thanks for all your help so far! ;)

codefund.com at 2007-9-8 > top of Msdn Tech,Windows Forms,Windows Forms General...
# 7
You have anchored your control to the bottom and right. This means that the control will maintain its design-time distance from the bottom and right edges of the form. When you resize the form, the control will maintain those distances, not maintaining the distances from the top and left edge.

If you want the control to expand left-to-right, then you must anchor the control to the left and to the right. If you want it to expand downwards, then you must anchor it to both the top and bottom. Just try the various options, really. There are only a few combinations, and it should be immediately apparent when you've hit the right one.

codefund.com at 2007-9-8 > top of Msdn Tech,Windows Forms,Windows Forms General...
# 8
No wonder you're an MVP Ken! That worked like a charm! I'm glad someone can help an ignorant windows forms user like myself! ;)
codefund.com at 2007-9-8 > top of Msdn Tech,Windows Forms,Windows Forms General...