C#想实现多个文本框进行连续的输入输出,这个循环该如何实现,该定义什么为变量?
如下是一个窗体,上面有很多文本框,左边的是输入框,取名inputBox1,2,3……,右边的是输出框,取名outputBox1,2,3……,且相互对应。我想实现将窗体运行...
如下是一个窗体,上面有很多文本框,左边的是输入框,取名inputBox1,2,3……,右边的是输出框,取名outputBox1,2,3……,且相互对应。我想实现将窗体运行起来后用户在输入框内输入数据,按下Convert按钮后系统将输入框(inputBox1,2,3……)的数据运算后将结果输入相应的输出文本框内(outputBox1,2,3……),实现这样高效的循环该定义什么变量?怎么写?
展开
1个回答
展开全部
方法很多,比如下面的,假定上面你那个inputbox1的textbox名为txtPole,后面对应的输出框名为txtPole0(下面也是相同的,每个输出框的名字都是输入框名后附加0)
public Form1()
{
InitializeComponent();
gettextbox(this.Controls);
}
Dictionary<string, TextBox> dic = new Dictionary<string, TextBox>();
private void gettextbox(Control.ControlCollection cc)//将所有TextBox存入dic
{
foreach (Control c in cc)
{
if (c.HasChildren)
gettextbox(c.Controls);
else
{
if (c is TextBox)
if (!dic.ContainsKey(c.Name))
dic.Add(c.Name, (TextBox)c);
}
}
}
//我不清楚你具体的转换流程,下面只是示例,作用是将每个输出框的内容设定为输入框内容后附加hello
private void button1_Click(object sender, EventArgs e)//转换
{
foreach (KeyValuePair<string, TextBox> k in dic) //遍历字典
{
if (!k.Key.EndsWith("0")) //是否是以0结束的名称,即非输出框
if (dic.ContainsKey(k.Key + "0"))//如果有对应的输出框存在
dic[k.Key + "0"].Text = dic[k.Key].Text + " hello";//将对应的文本框后附加hello
}
}
追问
方法满好,就是这样我得把很多文本框改名,有没有其他想法
追答
这个只是一个参考,你可以在它的基础上进行变化,比如说将输入框从上到下的tag均设定为递增的偶数,即第一个输入框tag为0,第二个tag为2,而输出框的tag由为1、3、5...(即每个输出框的tag都是对应的输入框的tag加1,这样程序就可以变化为
Dictionary<int, TextBox> dic = new Dictionary<int, TextBox>();
private void gettextbox(Control.ControlCollection cc)//将所有TextBox存入dic
{
foreach (Control c in cc)
{
if (c.HasChildren)
gettextbox(c.Controls);
else
{
if (c is TextBox)
if (c.Tag != null)
{
int index = Convert.ToInt32(c.Tag);
if (!dic.ContainsKey(index))
dic.Add(index, (TextBox)c);
}
}
}
}
private void button1_Click(object sender, EventArgs e)
{
foreach (KeyValuePair<int, TextBox> k in dic) //遍历字典
{
if (k.Key % 2 == 0) //偶数,即输入框
if (dic.ContainsKey(k.Key + 1))
dic[k.Key + 1].Text = dic[k.Key].Text + " hello";//将对应的文本框后附加hello
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询