C#想实现多个文本框进行连续的输入输出,这个循环该如何实现,该定义什么为变量?

如下是一个窗体,上面有很多文本框,左边的是输入框,取名inputBox1,2,3……,右边的是输出框,取名outputBox1,2,3……,且相互对应。我想实现将窗体运行起来后用户在输入框内输入数据,按下Convert按钮后系统将输入框(inputBox1,2,3……)的数据运算后将结果输入相应的输出文本框内(outputBox1,2,3……),实现这样高效的循环该定义什么变量?怎么写?

方法很多,比如下面的,假定上面你那个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
    }
}

温馨提示:答案为网友推荐,仅供参考
相似回答