日期:2014-05-20  浏览次数:20899 次

动态添加控件后,处理事件时有异常。
我在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”类型的异常

虽然并没有影响程序的运行,但我想请问这是为什么啊?对程序有什么不良影响吗?是否可以改正?

谢谢!

------解决方案--------------------
mark
------解决方案--------------------
mark,没碰到过啊
------解决方案--------------------
看上面的代码,控件添加的过程是不会出错的。
建议楼主先把radioBtnC_CheckedChanged()这个方法里面的代码全部注释掉,看还有没有这个异常。
------解决方案--------------------
如果仅仅上面的代码是不会有异常的。
------解决方案--------------------
mark
------解决方案--------------------
System.Windows.Forms.dll中某个try...catch结构中的throw了个InvalidOperationException,但是被catch了
只是碰巧是第一次throw这种Exception,所以记录了下来
总之,不需要关心
------解决方案--------------------
radioBtnF[i].CheckedChanged += new System.EventHandler(radioBtnC_CheckedChanged); 
在初始化是否重復?
------解决方案--------------------
不太理解为什么是精
------解决方案--------------------
有几个地方可以再确认一下

1. 每次单击RadioButton,radioBtnC_CheckedChanged()这个函数是会被调两次的,分别是上一个Uncheck,和当前这个Check. 楼主是否对这个做了判断?

2. 把 comboBox1.DataSource = ds.Tables["class1"]; 这句换另一个地方执行一下,看是否仍然失败。如果仍然失败,则应该和RadioButton没多大关系,如果成功了,考虑哪个RadioButton选中是否对这句话有影响。

3. 楼主可以分别执行一下 取下标ds.Tables["class1"]和对comboBox1.DataSource赋值,看是哪个失败。

------解决方案--------------------
HTML code
<span class="adminOpera"> ss </span>

------解决方案--------------------
请教怎样写详细设计?

------解决方案--------------------
我说句题外话,楼主要添加一组RadioButton控件为什么不用RadioButtonList,我这是提醒一下或许你有不用这个空间的原因吧
------解决方案--------------------
友情路过