C#中foreach问题

dali_yan 2012-03-10 05:12:51
代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace label_use
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
for (int i = 1900; i <= 2050; i++)
{
comboBox1.Items.Add(i);
}
comboBox1.Text = DateTime.Now.Year.ToString();

}

private void label2_Click(object sender, EventArgs e)
{

}

private void textBox1_TextChanged(object sender, EventArgs e)
{

}

private void label1_Click(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int intyear = Convert.ToInt32(comboBox1.Text);
string strtext = "";
switch (intyear %12)
{
case 4:
strtext="鼠";
break;
case 5:
strtext = "牛";
break;
case 6:
strtext = "虎";
break;
case 7:
strtext = "兔";
break;
case 8:
strtext = "龙";
break;
case 9:
strtext = "蛇";
break;
case 10:
strtext = "马";
break;
case 11:
strtext = "羊";
break;
case 0:
strtext = "猴";
break;
case 1:
strtext = "鸡";
break;
case 2:
strtext = "狗";
break;
case 3:
strtext = "猪";
break;
}
foreach (RadioButton rbtn in groupBox1 .Controls )
{
if (rbtn.Text==strtext)
{
rbtn.Checked = true;
}

}

}

private void RadioButton4_CheckedChanged(object sender, EventArgs e)
{

}

private void radioButton12_CheckedChanged(object sender, EventArgs e)
{

}
}
}
问题在如下图:
在调试是为什么会出现“当从一个数字执行强制转换时,值必须是一个小于无限大的数字”这样的排错提示呢?求解。
...全文
153 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dali_yan 2012-03-10
  • 打赏
  • 举报
回复
谢谢啊!终于解决了。
threenewbee 2012-03-10
  • 打赏
  • 举报
回复
图片上根本就不是你说的那个错误。晕。

还有一种写法:
foreach (RadioButton rbtn in groupBox1.Controls)
{
...
}
=>
foreach (RadioButton rbtn in groupBox1.Controls.Cast<Control>().Where(x => x is RadioButton).Select(x => x as RadioButton))
{
...
}
threenewbee 2012-03-10
  • 打赏
  • 举报
回复
foreach (RadioButton rbtn in groupBox1.Controls)
{
...
}
修改为
foreach (Control c in groupBox1.Controls)
{
RadioButton rbtn = c as RadioButton;
...
}

dali_yan 2012-03-10
  • 打赏
  • 举报
回复
那应该怎么修改呢?
色拉油 2012-03-10
  • 打赏
  • 举报
回复
int intyear = Convert.ToInt32(comboBox1.Text);转不成int
threenewbee 2012-03-10
  • 打赏
  • 举报
回复
和foreach无关。

int intyear = Convert.ToInt32(comboBox1.Text);
comboxbox里面是日期,无法转换成年份。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧