C# winfrom 怎么判断多个文本框中的值是否存在相同

判断是否有值才进行对比哦,默认为空的...... 判断是否有值才进行对比哦,默认为空的... 展开
 我来答
就烦条0o
2015-12-15 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部

用一个List<string>存放文本框中的内容,遍历父控件中所有子控件,如果子控件为文本框,先检查文本框值是否存在于list中,如果存为则说明有重复,如果没有,则把值添加到list中,如果最终没有出现重复值,说明不存在相同的。见下如代码:

        private void button1_Click(object sender, EventArgs e)
        {
            List<string> strlst = new List<string>();
            bool has = false;
            foreach (Control ctl in this.Controls)
            {
                if (ctl is TextBox)
                {
                    if (strlst.Contains(ctl.Text))
                    {
                        MessageBox.Show("存在重复");
                        has = true;
                        break;
                    }
                    else
                    {
                        strlst.Add(ctl.Text);
                    }
                }
            }
            if (!has)
            {
                MessageBox.Show("不存在重复");
            }
        }
    }

效果如图:

jianghui7897
2011-12-29 · 超过30用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:69.2万
展开全部
好吧。。我来说说我想到的最简单的吧
Dictionary<string, string> dic = new Dictionary<string, string>();
try
{
dic.add(textbox1.text,"1");//"1"不用管,其实随便写什么只要是个字符串就行
dic.add(textbox2.text,"1");
dic.add(textbox3.text,"1");
dic.add(textbox4.text,"1");
dic.add(textbox5.text,"1");
dic.add(textbox6.text,"1");
dic.add(textbox7.text,"1");
}
catch
{
return;
如果进入catch,就等于出现异常,也就是说文本框中的值有重复
具体原理不懂可以去看看Dictionary字典的说明,Dictionary字典的键是不允许重复的
}
没进入catch就是文本框的值没重复,进行你需要的操作,在CATCH{}外面写你想写的代码即可
更多追问追答
追问
如果后面有些文本框为空呢?用户只填两个怎么办?
追答
用户只填写两个会进入catch,因为有多个空,值就重复,如果你希望用户填两个,其他不填不会报错的话,代码可以这么改:把所有ADD都改成textbox1的形式,那么就能达到你说的目的了
Dictionary dic = new Dictionary();
try
{
dic.add(textbox1.text.trim()==""?textbox1.id.tostring():textbox1.text.trim(),"1");//"1"不用管,其实随便写什么只要是个字符串就行
dic.add(textbox2.text,"1");
dic.add(textbox3.text,"1");
dic.add(textbox4.text,"1");
dic.add(textbox5.text,"1");
dic.add(textbox6.text,"1");
dic.add(textbox7.text,"1");
}
catch
{
return;
如果进入catch,就等于出现异常,也就是说文本框中的值有重复
具体原理不懂可以去看看Dictionary字典的说明,Dictionary字典的键是不允许重复的
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
判官丶2018
2011-12-29
知道答主
回答量:10
采纳率:0%
帮助的人:7万
展开全部
List<TextBox> list = new List<TextBox>();
//查找页面上所有控件
foreach (Control item in this.Controls)
{
if (item is TextBox)//判断是否是一个TB
{
list.Add(item as TextBox);//转换为TB放入集合
}
}
foreach (var item1 in list)
{
foreach (var item2 in list)
{
if (item1.Text != string.Empty && item2.Text != string.Empty && item1.Text == item2.Text)//判断值
{
//放入你的操作
list.Remove(item2);//避免后面重复循环
}
}
list.Remove(item1);//避免后面重复循环
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
biocommando
2011-12-29 · TA获得超过4867个赞
知道大有可为答主
回答量:2395
采纳率:0%
帮助的人:1379万
展开全部
用遍历窗体控件集合的方法比较好,如果遍历到的控件是textbox类型,传第一个值保存在数组中,第二个值和数组中前一个值比较,相同则不保存,不相同则保存,最后看看数组中数量和控件的数量一致不,不一致说明有一样的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sugarhu
2011-12-29
知道答主
回答量:18
采纳率:100%
帮助的人:20.3万
展开全部
我想了两种思路,winform没有findControl,只有个this.Controls.Contains("textBox1"),因此除了遍历没办法了。。。
思路1:遍历Controls,具体你自己完善下,
if(this.Controls.Count>0)
{
foreach(Control c in this.Controls)
if(c.GetTepy==Tepyof(TextBox))
string str += ((TextBox)c).Text;
}
思路2,把你所有的TextBox从TextBox1到TextBoxN全部保存在一个数组中,虽然比较麻烦,但是实现相对比较简单些,如下
TextBox[ ] tb = new TextBox[10]{textBox1,……textBox10};
再用tb[i].Text 访问textBox的内容。
更多追问追答
追问
判断是否有值才进行对比哦,默认为空的...还有就是怎么满足条件后怎么跳出两个for循环啊?我用的跟你的第二个方法一样吧
追答
{
//for (int i = 1; i <= 30; i++)
//{
// Control tb = this.Controls.Contains("textBox1");

//}
TextBox[ ] tb = new TextBox[3]{textBox1,textBox2,textBox3};
//for (int i = 0; i < tb.Length; i++)
//{
// if (tb[i].Text != "")
// {
// string str = "text";
// str.Equals()
// }
//}

for (int i = 0; i < tb.Length; i++)
{
if (tb[i].Text != "")
{
for(int j=0;j<i;j++)
{
if(tb[i].Text==tb[j].Text)
{
MessageBox.Show("第" + i + "个和第" + j + "个相同!");
}
}
}
}

不管是第一种思路还是第二种,都必须判断数组中的值。这就跟99乘法表一样,必须用2个for循环,没办法的,呵呵
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式