C#中combobox绑定问题,这个得高手来答了。问题已经解决我想知道道理。(在线)

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:55:57
cmbPackCode.DataSource = this.m_Dt;
cmbPackCode.DisplayMember = "PackCode";
cmbPackCode.ValueMember = "PackCode";

cmbSingleCode.DataSource = this.m_Dt;
cmbSingleCode.DisplayMember = "singleCode";
cmbSingleCode.ValueMember = "singleCode";
我的问题:两个combobox控件同时绑定了同一个数据源m_Dt(databable).引发的combobox联动问题,我的本意是不想让这两个控件一起变化。这个估计得起高手解释下问什么了。不用告诉我怎么解决已经解决了,(最好也说说你的解决方案)我想知道其中的道理,谢谢。拜求答案。超详细的有加分。
1楼我说的联动的 意识就是 我点击上面的combobox选项 下面的combobox里面的值也发生变化。
2楼c#winform里面没有autopostback吧。
3楼看上去应该是可行,不过我克隆一个clone数据源就完了不用那么麻烦。谢谢。

很简单啊,绑定的统一个dt,一个选择变了,dt里面的游标就变了,当前激活的数据行也变化了,第二个自然也就跟着变了

没太理解 LZ 说的联动是什么意思? 是selectindexchange事件?

看了一下 这个是combobox 的OnSelectedIndexChanged方法代码 可以看出 数据源不为空时操作了数据源~

protected override void OnSelectedIndexChanged(EventArgs e)
{
base.OnSelectedIndexChanged(e);
EventHandler handler = (EventHandler) base.Events[EVENT_SELECTEDINDEXCHANGED];
if (handler != null)
{
handler(this, e);
}
if (((base.DataManager != null) && (base.DataManager.Position != this.SelectedIndex)) && (!base.FormattingEnabled || (this.SelectedIndex != -1)))
{
base.DataManager.Position = this.SelectedIndex;
}
}
--------------------
其基类中涉及一些windows消息处理 看不懂了~~

public class CurrencyManager : BindingManagerBase
这是base.DataManager对象的类 可以看出数据绑定由BindingManagerBase类进行控制 两个控件操作同一数据源时共同由BindingManagerBase控制
base.DataManager.Position 的值改变 另一控件也随之改变

用别外一种方法实现,如下:
cmbPackCode.items.clear();
cm