我在Windform动态添加了一组RadioButton,代码如下:
radioBtnF[i] = new RadioButton();
radioBtnF[i].Name = "radioBtnC" + i.ToString();
flowLayoutPanel1.Controls.Add(radioBtnF[i]);
radioBtnF[i].CheckedChanged += new System.EventHandler(radioBtnC_CheckedChanged);在运行程序时,单击RadioButton后,radioBtnC_CheckedChanged 里的代码正确的执行了,但VS2005的输出窗口里总会报:
在 System.InvalidOperationException 中第一次偶然出现的“System.Windows.Forms.dll”类型的异常虽然并没有影响程序的运行,但我想请问这是为什么啊?对程序有什么不良影响吗?是否可以改正?谢谢!
radioBtnF[i] = new RadioButton();
radioBtnF[i].Name = "radioBtnC" + i.ToString();
flowLayoutPanel1.Controls.Add(radioBtnF[i]);
radioBtnF[i].CheckedChanged += new System.EventHandler(radioBtnC_CheckedChanged);在运行程序时,单击RadioButton后,radioBtnC_CheckedChanged 里的代码正确的执行了,但VS2005的输出窗口里总会报:
在 System.InvalidOperationException 中第一次偶然出现的“System.Windows.Forms.dll”类型的异常虽然并没有影响程序的运行,但我想请问这是为什么啊?对程序有什么不良影响吗?是否可以改正?谢谢!
建议楼主先把radioBtnC_CheckedChanged()这个方法里面的代码全部注释掉,看还有没有这个异常。
只是碰巧是第一次throw这种Exception,所以记录了下来
总之,不需要关心
comboBox1.DataSource = ds.Tables["class1"];
是它引起的异常,但我定义的comboBox1_SelectedValueChanged 这个事件并没有运行啊。
请问这是为什么啊?
在初始化是否重復?
for (int i = 0; i < ds.Tables["level2"].Rows.Count; i++)
{
//
// 添加 radioBtnC
//
radioBtnF[i] = new RadioButton();
radioBtnF[i].AutoSize = true;
//radioBtnF[i].Location = new System.Drawing.Point(3, 3);
radioBtnF[i].Name = "radioBtnC" + i.ToString();
radioBtnF[i].Size = new System.Drawing.Size(95, 16);
radioBtnF[i].TabIndex = 0;
radioBtnF[i].TabStop = true;
radioBtnF[i].Text = ds.Tables["level2"].Rows[i]["typename"].ToString();
radioBtnF[i].Tag = ds.Tables["level2"].Rows[i]["typeid"].ToString();
radioBtnF[i].UseVisualStyleBackColor = true;
flowLayoutPanel1.Controls.Add(radioBtnF[i]);
radioBtnF[i].CheckedChanged += new System.EventHandler(radioBtnC_CheckedChanged);
}我设计的是这些RadioButton的CheckedChanged都交由radioBtnC_CheckedChanged(object sender, EventArgs e) 处理。
comboBox1.DataSource = ds.Tables["class1"]; 注释,加上一句
comboBox1.Items.Add("dsfsdf"); 那么,comboBox1_SelectedValueChanged(object sender, EventArgs e)会被触发,而且也没有报异常。ds.Tables["class1"]是从如下代码中来的。
if (ds.Tables.Contains("class1"))
ds.Tables.Remove("class1");Orada.SelectCommand.CommandText = "Select * from type where parentid=" + Convert.ToInt16(radioBtn.Tag);
Orada.Fill(ds, "class1");
不是只有第一次,每次按那些动态添加的RadioButton时,都会报这个异常。
2,并没有执行失败,只是在VS05的输出窗口里出了个异常,并没有影响运行。
3, 取ds.Tables["class1"]没问题,
对comboBox1.DataSource赋值也没问题,但会出那个异常。
如果继续调查异常原因,我觉得可以再尝试下面几个测试:
1. 另外再new一个comBox2, 把ds.Tables["class1"]赋给comboBox2.DataSource,看是否还有异常;
2. 另外创建一个Table,赋给comboBox1.DataSource,看是否还有异常;
就能知道是ComBox的问题还是Tables的问题。
我估计是ComBox. 关于DataSource的详细用法,不是很清楚,楼主可以仔细查查看。
比比新添加的这个ComBox和原来那个有什么不同。
没事了就好。不过还是想知道真正的原因。
一开始是不知道,看了你的回复,回去找了一下,好象只有Web应用程序下才有吧?我这个是Windows下的。