我的 winforms 应用程序中有两个 ListBox
,我为它们分配了一个数据源,如下所示:
private void MakeMeasurementUnits()
{
var units = new List<MeasurementUnit>
{
new MeasurementUnit {Name = "Current", SiUnit = "A"},
new MeasurementUnit {Name = "Voltage", SiUnit = "V"},
new MeasurementUnit {Name = "Time", SiUnit = "s"},
new MeasurementUnit {Name = "Temprature", SiUnit = "°C"}
};
lbxXunit.DataSource = units;
lbxYunit.DataSource = units;
}
奇怪的是(或者可能因为这是我第一次!!),当我点击其中一个列表框的项目时,第二个列表框中的相同项目也被选中。这是默认行为吗?如何防止这种情况?如果这是默认行为,它有什么用?
我发现快速的补救方法是制作两个不同的数据源(同一个东西用另一个名字)
最佳答案
列表框似乎缓存了绑定(bind)源。这是默认行为。如果您想避免这种情况,最简单的方法是创建列表的副本以绑定(bind)到第二个数据源:
lbxXunit.DataSource = units;
lbxYunit.DataSource = units.ToList();
当您对同一数据有多个 View 并希望同步这些项目的选择时,这很有用。
关于c# - 多个控件的一个数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8713218/