窗体里有个下拉框控件ComboBox,我在按钮按下时要做一些操作,其中有对该下拉框是否有选中值进行判断,采用线程操作,代码如下
//按钮事件中代码
ThreadStart start = new ThreadStart(GetXzInfoDetails);
this.ConnectThread = new Thread(start);
this.ConnectThread.IsBackground = true;
this.ConnectThread.Start();
//GetXzInfoDetails中是一些操作
//现在的问题是,我想这么用
private delegate bool CheckComBoxDelgate();
private bool CheckComBox()
{
bool flag = true;
if (this.cmbXzList.InvokeRequired)
{
CheckComBoxDelgate Objdelegate = new CheckComBoxDelgate(CheckComBox);
this.Invoke(Objdelegate, null);
}
else
{
if (cmbXzList.SelectedItem == null)
{
flag = false;
}
}
return flag;
}
//然后在GetXzInfoDetails方法中来进行判断
if(CheckComBox())
{
MessageBox.Show("请选择一个选项!");
return;
}
但是那个CheckComBox是永远返回true的,大家帮忙解决下 谢谢,能像我那么用吗?以前只用过通过委托使线程得到主线程代理然后操作一些文本框什么的并赋值,没这么弄过呀。而且这个程序里我还想通过这种方法返回下拉框选中项的值,不知道可以不?大家有什么好办法
//按钮事件中代码
ThreadStart start = new ThreadStart(GetXzInfoDetails);
this.ConnectThread = new Thread(start);
this.ConnectThread.IsBackground = true;
this.ConnectThread.Start();
//GetXzInfoDetails中是一些操作
//现在的问题是,我想这么用
private delegate bool CheckComBoxDelgate();
private bool CheckComBox()
{
bool flag = true;
if (this.cmbXzList.InvokeRequired)
{
CheckComBoxDelgate Objdelegate = new CheckComBoxDelgate(CheckComBox);
this.Invoke(Objdelegate, null);
}
else
{
if (cmbXzList.SelectedItem == null)
{
flag = false;
}
}
return flag;
}
//然后在GetXzInfoDetails方法中来进行判断
if(CheckComBox())
{
MessageBox.Show("请选择一个选项!");
return;
}
但是那个CheckComBox是永远返回true的,大家帮忙解决下 谢谢,能像我那么用吗?以前只用过通过委托使线程得到主线程代理然后操作一些文本框什么的并赋值,没这么弄过呀。而且这个程序里我还想通过这种方法返回下拉框选中项的值,不知道可以不?大家有什么好办法
解决方案 »
- 一张树形菜单的递归表,把我搞昏了
- C#如何使用正则过滤HTML,但不过滤P、IMG、BR标签
- 非常菜鸟问题
- 图片存储到数据库出错了。。。。。。。。。。!!!!
- ActiveReport中向报表类传递的数据集有多个DataTable如何设置绑定字段?
- 用c#写一个数据库插入和更新的类,急用
- 求救?堆栈问题?
- 高分:谁知道ReportDocument的用法呀,好像和printDocument很不一样呀,请高手指点一下啦
- 请教高手
- 用System.IO.File.GetLastWriteTime()获取光盘上某个目录的时间竟然会抛ArgumentOutOfRangeException的异常,请教大虾我该如何获取光盘上
- 一个很奇怪的问题。
- picturebox绘图的问题!
比如说有字典存着下拉框的值当作key,对应上一个VALUE,我想在线程中通过当前所选的下拉框的值来找字典中的VALUE,
该如何做呢?
如果只是赋值的话还好说些
private bool CheckComBox()
{
bool flag = true;
if (this.cmbXzList.InvokeRequired)
{
CheckComBoxDelgate Objdelegate = new CheckComBoxDelgate(CheckComBox);
this.Invoke(Objdelegate, null);//你在线程里操作。肯定这里执行了。可你Invoke后flag 又没判断赋值。当然是true啊
}
else
{
if (cmbXzList.SelectedItem == null)
{
flag = false;
}
}
return flag;
}
//------------------------------------------------
delegate object CheckComBoxDelgate();object oSelectedItem = pdcbxMediaGroups.Invoke(new CheckComBoxDelgate(delegate() {return pdcbxMediaGroups.SelectedItem; }));//就两行代码,你判断oSelectedItem 更直接
/*如果要是放到线程里来做呢?
比如说有字典存着下拉框的值当作key,对应上一个VALUE,我想在线程中通过当前所选的下拉框的值来找字典中的VALUE,
该如何做呢?*/
//这个用IDictionary<string,object> 啊[email protected]
就是这个了
谢谢