【发布时间】:2012-12-12 03:42:24
【问题描述】:
我有一个带有控件的 TabControl 表单。
实例化表单后,我调用一个函数来准备它以接收值。
该函数将 Text 属性从“0”更改为某个值。 几行之后,我调用了一个继承函数,它递归地列出表单上的所有文本框并添加到对象列表中
当递归函数结束时,我查看列表,我的文本框有以前的值。
附加信息
// Textbox.text has "0"
textBox.Text = "123";
//Other components change
PrepareForm(); //inherited function that enumerates all TextBoxes (and other components) on that form in a list
在 PrepareForm() 内部:
// Value is "123"
List<Control> lstControls = new List<Control>();
foreach (Control c in this.Controls)
{
ListControls(lstControls, c);
}
// The textbox on the list has the old value ("0") <- Edited
protected void ListControls(List<Control> Controls, Control control)
{
if (control.HasChildren)
{
foreach (Control c in control.Controls)
{
ListControls(Controls, c);
}
}
}
编辑: 表单调用 InitializeComponent() 并用“0”填充文本框,然后 form_load 返回。我将值改为“123”并调用PrepareForm(),刚刚调用后,文本框的值为“123”,然后我调用recursive函数,当这个递归函数返回时,值变回“0”
【问题讨论】:
-
文本框正在改回值是一个问题...问题是问题...
标签: c# winforms inheritance recursion components