如何动态获取Winform中的标签数量?因为在我的表单中,我大约有12个标签,如果我按下按钮,我想将每个标签更改为文本框。总而言之,我想使每个标签都可编辑,并在编辑并保存后将其更改回标签。总之,它将像可编辑标签。但是,为每个标签编写更改需要花费大量时间和代码行,因此,如果可以使其动态化,我将是完美的。谢谢。
我建议使用TextBox
,而不是Label
包含任何可以编辑的文本。因此,我们在[[2不同模式Label Mode(无编辑)和TextBox Mode中具有TextBox
。在它们之间切换(假设WinForms):
// Make TextBox to look like a label: readonly, color, border etc.
private static void ToLabelMode(TextBox box) {
if (null == box)
return;
box.HideSelection = true;
box.BackColor = SystemColors.Control;
box.ReadOnly = true;
box.BorderStyle = BorderStyle.None;
}
private static void ToTextBoxMode(TextBox box) {
if (null == box)
return;
box.HideSelection = false;
box.BackColor = SystemColors.Window;
box.ReadOnly = false;
box.BorderStyle = BorderStyle.Fixed3D;
}
然后您可以使用它们:
TextBox[] m_TextBoxes; private void MyForm_Load(object sender, EventArgs e) { m_TextBoxes = new TextBox[] { textBoxFirstName, textBoxLastName, //TODO: Put the relevant ones }; // Let all TextBox be in Label mode EnableEdit(false); } private void EnableEdit(bool enabled) { foreach (var box in m_TextBoxes) if (enabled) ToTextBoxMode(box); else ToLabelMode(box); }