for (int i = 0; i < t; i++)
{
textboxX.Name = "txtGoX" + i.ToString();
}
//参数窗口
for (int i = 0; i < t; i++)
{
idX = "X" + i.ToString();
//怎么做
}
//主窗口
现在写了两个窗口,参数窗口是通过point动态增加控件数量,现在可以对新建的控件及idx命名,如果我要在主窗口做一个变量,并将对应textbox(i)的值赋给idx(i),应该怎么实现
TextBox txtbox = new TextBox();
txtbox.Left = 10;
txtbox.Top = i * 20 + 10;
txtBox.Name = txtGoX + i.ToString();
MainForm.Controls.Add(txtbox);
方法1:遍历控件
foreach(control c in this.controls)
然后判断c的类型是textbox,就强制转换为textbox,然后拿到name属性,判断一下里面是不是你要的那个
方法2:维护一个List<TextBox>,每新增一个textbox就加进list里,这样就可以通过下标直接操作对应的textbox
可以通过以下步骤来实现动态增加控件数量并对每个新建的控件及其idx参数进行命名,同时将对应textbox的值赋给idx:
int idx = 0;
private void addButton_Click(object sender, EventArgs e)
{
// 创建新的控件,并将idx参数作为其名称
TextBox newTextBox = new TextBox();
newTextBox.Name = "textBox" + idx.ToString();
newTextBox.Text = "Text Box " + idx.ToString();
// 将控件加入主窗口
this.Controls.Add(newTextBox);
// 对idx参数进行自增
idx++;
}
private void addButton_Click(object sender, EventArgs e)
{
// 创建新的控件,并将idx参数作为其名称
TextBox newTextBox = new TextBox();
newTextBox.Name = "textBox" + idx.ToString();
newTextBox.Text = "Text Box " + idx.ToString();
// 添加事件,当文本框的值改变时自动将文本框的值赋给idx
newTextBox.TextChanged += (s, args) =>
{
TextBox textBox = (TextBox) s;
int textBoxIdx = Int32.Parse(textBox.Name.Substring(7));
idxValues[textBoxIdx] = textBox.Text;
};
// 将控件加入主窗口
this.Controls.Add(newTextBox);
// 对idx参数进行自增
idx++;
}
Dictionary<int, string> idxValues = new Dictionary<int, string>();
完整的代码示例:
public partial class Form1 : Form
{
int idx = 0;
Dictionary<int, string> idxValues = new Dictionary<int, string>();
public Form1()
{
InitializeComponent();
}
private void addButton_Click(object sender, EventArgs e)
{
// 创建新的控件,并将idx参数作为其名称
TextBox newTextBox = new TextBox();
newTextBox.Name = "textBox" + idx.ToString();
newTextBox.Text = "Text Box " + idx.ToString();
// 添加事件,当文本框的值改变时自动将文本框的值赋给idx
newTextBox.TextChanged += (s, args) =>
{
TextBox textBox = (TextBox) s;
int textBoxIdx = Int32.Parse(textBox.Name.Substring(7));
idxValues[textBoxIdx] = textBox.Text;
};
// 将控件加入主窗口
this.Controls.Add(newTextBox);
// 对idx参数进行自增
idx++;
}
private void printValuesButton_Click(object sender, EventArgs e)
{
string output = "";
foreach (int key in idxValues.Keys)
{
output += "textBox" + key.ToString() + ": " + idxValues[key] + "\n";
}
MessageBox.Show(output);
}
}