c# - 多个控件的一个数据源

标签 c# winforms datasource

我的 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/

相关文章:

c# - 如何将 NLog 用于 DLL

c# - OWIN 中间件中的 URL 重写

c# - 如何使用 LINQ 批量查找/匹配和更新记录?

c# - 如何从 DataContext 的跟踪机制中分离 LINQ-to-SQL 数据对象?

c# - 单击控件内的文本时,用户控件单击事件不起作用?

java - 使用Spring+dbcp刷新数据源

c# - 在 C# Windows 窗体中将组和项目添加到 ListView

c# - 日期时间选择器阻止较早的日期

java - 在 SpringBoot 和 MyBatis 应用程序中,对于动态数据源,查询总是先于 AOP 执行

c# - 如何将数据从 texboxes 插入到 datagridview?