ç¨ä¸ä¸ªList<string>åæ¾ææ¬æ¡ä¸çå 容ï¼éåç¶æ§ä»¶ä¸ææåæ§ä»¶ï¼å¦æåæ§ä»¶ä¸ºææ¬æ¡,å æ£æ¥ææ¬æ¡å¼æ¯å¦åå¨äºlistä¸ï¼å¦æå为å说ææéå¤ï¼å¦æ没æï¼åæå¼æ·»å å°listä¸ï¼å¦ææç»æ²¡æåºç°éå¤å¼ï¼è¯´æä¸åå¨ç¸åçãè§ä¸å¦ä»£ç ï¼
private void button1_Click(object sender, EventArgs e)ææå¦å¾ï¼
如果后面有些文本框为空呢?用户只填两个怎么办?
追答用户只填写两个会进入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字典的键是不允许重复的
}
貌似你的有点小错误捏..找不到textbox1.id.tostring():这个属性耶..
追答先小汗一下,首先,请确认你的TextBox控件是服务器控件,其次请确定自己的代码有没写错,textbox1.id.tostring():中textbox1指的是控件的ID,id(其实在后台的写法是大写ID)指的是控件的ID属性,这个值是必然存在的。
判断是否有值才进行对比哦,默认为空的...还有就是怎么满足条件后怎么跳出两个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循环,没办法的,呵呵
关键是相同了,怎么跳出两个for循环啊
追答判断数组内的值只能用2个for或者foreach,除非数组内只有2个值。你也知道,在编程中数组是个神奇的东西,我们经常用的datatable和dataset以及view、list泛型都是用的多维数组,必须进行二次匹配的哈,如果不用datatabla,我们用多维数组照样可以取到数据中的值,程序都是万变不离其宗,只不过我俩用数组保存textbox的方法比较笨而已,呵呵,程序能达到预想的效果就不错了。末楼:alex901226 那位兄弟用list泛型相对比较正规吧,把窗体的控件全部遍历个遍虽然很省事,如果窗体其中有一个textbox的用处不在要判断的控件之列就不好了,你不妨试试,其实两种方式,思路都是一个样,都是遍历数组的值进行判断。我个人比较喜欢简单,所以只能用数组了。。
本回答被提问者采纳