I'm using Visual Studio 2010 with C#. Is there a concept in Windows Forms development of somehow linking a label with is text box? Something so that they move together as a unit? In the ASP.NET world, there is the AssociatedControlId property of the label control. I also think I remember MS Access form designer having some way of associating (or linking) labels with controls. Does this feature even exist in Visual Studio world?
If not, how do you group labels with controls such that if you move a text box you don't have to manually move the label also?
There doesn't appear to be a built in one. You can roll your own Field
class though. Below is a complete example.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace FieldClassTest
{
class Field : FlowLayoutPanel
{
public Label label;
public TextBox text_box;
public Field(string label_text)
: base()
{
AutoSize = true;
label = new Label();
label.Text = label_text;
label.AutoSize = true;
label.Anchor = AnchorStyles.Left;
label.TextAlign = ContentAlignment.MiddleLeft;
Controls.Add(label);
text_box = new TextBox();
Controls.Add(text_box);
}
}
static class Program
{
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var form = new Form();
var panel = new FlowLayoutPanel();
panel.FlowDirection = FlowDirection.TopDown;
panel.Dock = DockStyle.Fill;
var first_name = new Field("First Name");
panel.Controls.Add(first_name);
var last_name = new Field("Last Name");
panel.Controls.Add(last_name);
form.Controls.Add(panel);
Application.Run(form);
}
}
}
Here's what the example program looks like on my system:
No there is not - at least with the out of the box controls. If you want this you could achieve it with a user control.
In general the winforms is not line driven in the same way as HTML is.
I 2nd @Neils answer of just creating a user control with a textbox in it. The panel can be used to group controls, but it can be pretty tedious if you have a lot of controls on the form.
If you want to support more than just textboxes, WinForms allows you to create your own designer. If you inherit your designer from the ParentControlDesigner class, you can drop any control you want into your custom label control.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With