//假设 test() 运行于一不安全线程下
void test()
{
......
Form1 frm = new Form1();
frm.listBox1.Items.Add("Test!");
......
}
......
[C#]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Test
...{
public partial class Form1 : Form
...{
......
//定义一个 CallBack 函数
delegate void AddItemsCallBack(String s);
//CallBack 指向的函数
public void AddItems(String s)
...{
AddItemsCallBack cb = new AddItemsCallBack(AddItems);
if (this.listBox1.InvokeRequired)
this.listBox1.Invoke(cb, new object[] ...{ s });
else
this.listBox1.Items.Add(s);
}
......
}
}
Public Class Form1Class Form1
......
'定义一个 CallBack 函数
Delegate Sub AddItemsCallBack()Sub AddItemsCallBack(ByVal s As String)
'CallBack 指向的函数
Public Sub AddItems()Sub AddItems(ByVal s As String)
Dim cb As New AddItemsCallBack(AddressOf AddItems)
If Me.ListBox1.InvokeRequired Then
Me.ListBox1.Invoke(cb, New Object() {s})
Else
Me.ListBox1.Items.Add(s)
End If
End Sub
......
End Class[C#]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace LabScriptTest
...{
public partial class Form1 : Form
...{
private void Form1_Load(object sender, EventArgs e)
...{
........
//禁用事件列表
this.Events.Dispose();
//设置
........
}
}
}
Public Class Form1Class Form1

Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
........
'禁用事件列表
Me.Events.Dispose()
'设置
........
End Sub
End Class若想在向窗体画图后立即更新窗体则需要使用 Invalidate() 函数,而不是 Update() 函数,前者会使全部区域无效而必须重新 Paint,后者只使未使用控件区域无效而重新 Paint。
1224



被折叠的 条评论
为什么被折叠?



