一切福田,不離方寸,從心而覓,感無不通。

线程间操作无效: 从不是创建控件“label1”的线程访问它

Thread thread=null; //定义线程  //开始线程   private void button1_Click(object sender, EventArgs e)   {   thread = new Thread(new ThreadStart(StartThread));   thread.Start();//开始线程   }   private void StartThread()   {   int i = 0;   while (true)   {   this.label1.Text = i.ToString(); //此处报错   i++;   }   }   //结束线程   private void button4_Click(object sender, EventArgs e)   {   thread.Abort();   }   问题:当我们运行的时候会出现错误:"线程间操作无效: 从不是创建控件“label1”的线程访问它。" 解决方案:在程序运行的时候增加一句话,如下: public Form1() {InitializeComponent();Control.CheckForIllegalCrossThreadCalls = false; //这是增加的一句话 }  缺点:将UI传给了子线程,违背了弱耦合、封装的思想。子线程去更新UI的状态,如果有多个不同主线程要获取子线程状态,怎么办?   

龙生   22 Oct 2012
View Details

JS中操作table的方法

JS中操作table的方法   var myTable = document.getElementById("myTable ");   //添加行   var newTR = myTable.insertRow(index);   该方法创建一个新的 TableRow 对象表示一个新的 <tr> 标记,并把它插入表中的指定位置。      新行将被插入 index 所在行之前。若 index 等于表中的行数,则新行将被附加到表的末尾。   如果表是空的,则新行将被插入到一个新的 <tbody> 段,该段自身会被插入表中。   //设置行的id和class属性   newTR.id = "myid";   newTR.className="MainContentText";   //添加列:序号   var newTD=newTR.insertCell(0);   //添加列内容   newTD.innerHTML = "dfdsf";           //删除表所有行,只留标题行   var rows = myTable.rows.length;   for(var i=0;i<rows-1;i++){   myTable.deleteRow();//不给参数,代表删除最后一行   }           JS本身不支持方法重载   Js中实现方法重载的方式也知道了呵呵(会默认调用参数最多的那个方法) 转自:http://www.cnblogs.com/judy/archive/2010/06/05/1752230.html

龙生   22 Oct 2012
View Details