函数功能:给一个ComboBox赋值。
两个委托如下:
private delegate void SetCusDelegage(ComboBox cbo);
private delegate DataSet CusDelegage();
第一种情况:在Form线程外另一线程赋值。过程如下:
private void SetCustomers(ComboBox cbo)
{
StringBuilder sb = new StringBuilder("select * from customers"); SqlConnection con = new SqlConnection("data source=mypc;initial catalog=northwind;user id=sa;password=weblogic");
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(sb.ToString(), con);
DataSet ds = new DataSet("Northwind");
sda.Fill(ds, "Customers"); cbo.DataSource = ds.Tables["Customers"].DefaultView;
cbo.DisplayMember = "CustomerID";
}
第二种情况:
private DataSet GetCustomers()
{
StringBuilder sb=new StringBuilder("select * from customers");
SqlConnection con = new SqlConnection("data source=mypc;initial catalog=northwind;user id=sa;password=weblogic");
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(sb.ToString(), con);
DataSet ds = new DataSet("Northwind");
sda.Fill(ds, "Customers");
return (ds);
}
调用第一种情况语句如下:
SetCusDelegage bd1 = new SetCusDelegage(SetCustomers);
IAsyncResult asRes1 = bd1.BeginInvoke(comboBox5, null, null);
调用第二种情况语句如下:CusDelegage bd1 = new CusDelegage(GetCustomers);
IAsyncResult asRes1 = bd1.BeginInvoke(comboBox5, null, null);
DataSet ds = bd1.EndInvoke(asRes1);
comboBox5.DataSource = ds.Tables["Customers"].DefaultView;
comboBox5.DisplayMember = "CustomerID";为什么后种方法可以,而前一种方法不行?郁闷当中!!!!!
两个委托如下:
private delegate void SetCusDelegage(ComboBox cbo);
private delegate DataSet CusDelegage();
第一种情况:在Form线程外另一线程赋值。过程如下:
private void SetCustomers(ComboBox cbo)
{
StringBuilder sb = new StringBuilder("select * from customers"); SqlConnection con = new SqlConnection("data source=mypc;initial catalog=northwind;user id=sa;password=weblogic");
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(sb.ToString(), con);
DataSet ds = new DataSet("Northwind");
sda.Fill(ds, "Customers"); cbo.DataSource = ds.Tables["Customers"].DefaultView;
cbo.DisplayMember = "CustomerID";
}
第二种情况:
private DataSet GetCustomers()
{
StringBuilder sb=new StringBuilder("select * from customers");
SqlConnection con = new SqlConnection("data source=mypc;initial catalog=northwind;user id=sa;password=weblogic");
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(sb.ToString(), con);
DataSet ds = new DataSet("Northwind");
sda.Fill(ds, "Customers");
return (ds);
}
调用第一种情况语句如下:
SetCusDelegage bd1 = new SetCusDelegage(SetCustomers);
IAsyncResult asRes1 = bd1.BeginInvoke(comboBox5, null, null);
调用第二种情况语句如下:CusDelegage bd1 = new CusDelegage(GetCustomers);
IAsyncResult asRes1 = bd1.BeginInvoke(comboBox5, null, null);
DataSet ds = bd1.EndInvoke(asRes1);
comboBox5.DataSource = ds.Tables["Customers"].DefaultView;
comboBox5.DisplayMember = "CustomerID";为什么后种方法可以,而前一种方法不行?郁闷当中!!!!!
private void SetCustomers(ref ComboBox cbo)不行别怪..
cbo.DisplayMember = "CustomerID";cbo.Invoke(setmethod, ...);
试试!我没有试过,不知道行不行.