做项目时遇到的问题:
dataSource被ComboBox引用过一次,会记忆最后一次选中的值,然后下一次再用时这个值会直接呈现在ComboBox中。
为验证是dataSource还是ComboBox自身含有记忆功能,设置了这样一个实验,
实验的组成:
1.一二两排的第一个ComboBox(以下简称cb1、cb4)都负责为同排第二、第三个ComboBox(以下简称cb2、cb3、cb5、cb6)动态赋值。
2.DataGridView 存在焦点事件,焦点事件的内容是,当选中一个焦点,焦点所在行的每个格的值将在第二排ComboBox上呈现。
实验的步骤:
1.当选中DataGridView格,焦点所在行的值如数反映在第二排ComboBox上。
2.当更改cb4的值,cb5、cb6引用了dataSource的值。
3.此时再更改cb1的值为cb2、cb3动态赋值,即cb2和cb3引用了和cb5、cb6同一个dataSource的值。
4.于是当选中DataGridView格,焦点所在行的值反映在第二排ComboBox上,与此同时,第一排ComboBox表现出惊人的同步性。
实验的结论:
当第二排ComboBox用过一次dataSource,而第一排ComboBox紧接着又用了同一dataSource,那么第一排ComboBox将呈现第二排ComboBox在dataSource中引用过的那个值,所以,记忆者不是ComboBox本身,而是dataSource,并且,这个“记忆”是动态记忆。
“dataSource 记忆” 的这个现象我曾和C#吧的一个吧友讨论过,他说查MSDN未果,不过他说,如果你不喜欢这样的记忆功能,有N多种方法可以避免,其中一个就是使用:
comboBox1.Items.Clear();
foreach (string item in 你定义的数组)
{
comboBox1.Items.Add(item);
}
实验的演示录像:
链接: http://pan.baidu.com/s/1pJ2OTCn 密码: m5o4