C#中动态控件销毁问题-创建窗口句柄出错
根据后台返回的记录条数,对每条记录生成动态button,并为每个控件添加Click事件,每6秒调用下面这过程,我的解决办法是把以前创建的全清除了,再创建新的,但运行一段时间后就出问题了说我 ----创建窗口句柄出错,帮我解决下
private void furInfoDisplay1(DataTable datatable)//
{
DataView dataView= new DataView(datatable);
dataView.RowFilter="ch_no=1";
Button tbfur=null;//表示坯料的中间变量
try
{
int count = dataView.Count ;
int i=0;
Panel1.Controls.Clear ();//先移除Panel1里面的所有控件
GC.Collect(); //这句加了还是出问题的
for(i =1;i<=count;i++)
{
Button button = new Button();
button.Name = "butto"+i.ToString();
button.TabIndex =700+i;
button.Visible =true ;
button.Click += new System.EventHandler(button_Click1);//添加事件
Panel1.Controls.Add (button) ;//在Panel1中显示这些按钮
}
tbfur=(Button)this.Panel1.GetNextControl(tbfur,true);
double slabLength=0,slabWidth=0;
foreach(DataRowView row in dataView)
{
tbfur.Text=row["slab_id"].ToString();//运行一段时间到这就说创建窗口句柄出错,开1个1小时出现,开2个半小时出现,出现这问题了 整个机器不能打开其它文件,大半是内存益出了
slabLength=Convert.ToDouble(row["slab_length"].ToString());//设置坯料的位置和尺寸
slabWidth=Convert.ToDouble(row["slab_width"].ToString());
tbfur.Width=(int)(slabLength/100);
tbfur.Height=(int)(slabWidth/75);
int position=(int)row["furposition"];
tbfur.Top=Panel1.Height- tbfur.Height - (position/75);
tbfur=(Button)this.Panel1.GetNextControl(tbfur,true);//取下一个按钮表示下一 坯料
}
}
根据后台返回的记录条数,对每条记录生成动态button,并为每个控件添加Click事件,每6秒调用下面这过程,我的解决办法是把以前创建的全清除了,再创建新的,但运行一段时间后就出问题了说我 ----创建窗口句柄出错,帮我解决下
private void furInfoDisplay1(DataTable datatable)//
{
DataView dataView= new DataView(datatable);
dataView.RowFilter="ch_no=1";
Button tbfur=null;//表示坯料的中间变量
try
{
int count = dataView.Count ;
int i=0;
Panel1.Controls.Clear ();//先移除Panel1里面的所有控件
GC.Collect(); //这句加了还是出问题的
for(i =1;i<=count;i++)
{
Button button = new Button();
button.Name = "butto"+i.ToString();
button.TabIndex =700+i;
button.Visible =true ;
button.Click += new System.EventHandler(button_Click1);//添加事件
Panel1.Controls.Add (button) ;//在Panel1中显示这些按钮
}
tbfur=(Button)this.Panel1.GetNextControl(tbfur,true);
double slabLength=0,slabWidth=0;
foreach(DataRowView row in dataView)
{
tbfur.Text=row["slab_id"].ToString();//运行一段时间到这就说创建窗口句柄出错,开1个1小时出现,开2个半小时出现,出现这问题了 整个机器不能打开其它文件,大半是内存益出了
slabLength=Convert.ToDouble(row["slab_length"].ToString());//设置坯料的位置和尺寸
slabWidth=Convert.ToDouble(row["slab_width"].ToString());
tbfur.Width=(int)(slabLength/100);
tbfur.Height=(int)(slabWidth/75);
int position=(int)row["furposition"];
tbfur.Top=Panel1.Height- tbfur.Height - (position/75);
tbfur=(Button)this.Panel1.GetNextControl(tbfur,true);//取下一个按钮表示下一 坯料
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货