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

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

2013-12-17 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部

方法很多,比如下面的,假定上面你那个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
    }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式