【发布时间】:2010-09-29 05:02:18
【问题描述】:
我正在研究委托和简单的线程,我在 ComboBox 控件中进行了尝试,并在 DataGridViewComboBoxColumn 中进行了实验(因为我认为它会是相同的)但似乎没有 Invoke 属性为此种。
如何在线程中设置 DataGridViewComboBoxColumn 属性?
请查看我的代码,这适用于使用线程设置ComboBox 控件的属性:
private delegate void DelegateSetProperties(DataTable dataSource, string valueMember, string displayMember);
Thread thread1;
DelegateSetProperties delegateSetProperties;
private void Form1_Load(object sender, EventArgs e)
{
delegateSetProperties = new DelegateSetProperties(SetProperties);
thread1 = new Thread(new ThreadStart(InitValues));
thread1.IsBackground = true;
thread1.Start();
}
private void SetProperties(DataTable dataSource, string valueMember, string displayMember)
{
comboBox1.DataSource = dataSource;
comboBox1.ValueMember = valueMember;
comboBox1.DisplayMember = displayMember;
comboBox1.SelectedIndex = 0;
//dataGridViewComboBoxColumn1.DataSource = dataSource;
//dataGridViewComboBoxColumn1.DisplayMember = valueMember;
//dataGridViewComboBoxColumn1.ValueMember = displayMember";
}
void InitValues()
{
var dt = new DataTable
{
TableName = "CATEGORY",
Columns = {
{"CategoryCode", typeof(string)},
{"Name", typeof(string)},
}
};
dt.Rows.Add("C1", "Category1");
dt.Rows.Add("C2", "Category2");
dt.Rows.Add("C3", "Category3");
// and so on...
comboBox1.Invoke(delegateSetProperties, new object[] { dt, "CategoryCode", "Name"
//dataGridViewComboBoxColumn1.Invoke(delegateSetEvents, new object[] { dt, "CategoryCode", "Name" });
});
}
请帮助...提前致谢。
【问题讨论】:
标签: c# winforms multithreading delegates