将列表绑定到数据源

2024-03-29

我希望能够将列表绑定到列表框数据源,并且当修改列表时,列表框的 UI 会自动更新。 (Winform 不是 ASP)。 这是一个示例:

private List<Foo> fooList = new List<Foo>();

    private void Form1_Load(object sender, EventArgs e)
    {
        //Add first Foo in fooList
        Foo foo1 = new Foo("bar1");
        fooList.Add(foo1);

        //Bind fooList to the listBox
        listBox1.DataSource = fooList;
        //I can see bar1 in the listbox as expected
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //Add anthoter Foo in fooList
        Foo foo2 = new Foo("bar2");
        fooList.Add(foo2);
        //I expect the listBox UI to be updated thanks to INotifyPropertyChanged, but it's not
    }

class Foo : INotifyPropertyChanged
{
    private string bar_ ;
    public string Bar
    {
        get { return bar_; }
        set 
        { 
            bar_ = value;
            NotifyPropertyChanged("Bar");
        }
    }

    public Foo(string bar)
    {
        this.Bar = bar;
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged(string info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }

    public override string ToString()
    {
        return bar_;
    }
}

如果我更换List<Foo> fooList = new List<Foo>(); by BindingList<Foo> fooList = new BindingList<Foo>();然后就可以了。但我不想改变原来的傻子类型。我想要这样的工作:listBox1.DataSource = new BindingList<Foo>(fooList);

编辑:我也刚刚读到这里List 与 BindingList 优点/缺点 https://stackoverflow.com/questions/2243950/listt-vs-bindinglistt-advantages-disadvantages来自 Ilia Jerebtsov :“当您将 Bi​​ndingSource 的 DataSource 设置为 List 时,它会在内部创建一个 BindingList 来包装您的列表”。我认为我的示例只是表明这不是真的:我的 List 似乎没有在内部包装到 BindingList 中。


你没有绑定源 http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.aspx在你的例子中。

您需要像这样修改它才能使用 BindingSource

   var bs = new BindingSource();
   Foo foo1 = new Foo("bar1");
   fooList.Add(foo1);

     bs.DataSource = fooList; //<-- point of interrest

    //Bind fooList to the listBox
    listBox1.DataSource = bs; //<-- notes it takes the entire bindingSource

Edit

请注意(正如评论中指出的那样)- 绑定源不适用于INotifyPropertyChanged

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将列表绑定到数据源 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new

随机推荐

  • 在 swift 4 中自动关闭视图控制器

    假设我有 3 个ViewControllers标记为 A B 和 C 现在 A 是rootViewController窗口的形状 它以模态方式呈现 B 当点击 B 中的按钮时 应该立即以模态方式呈现 C 并自动关闭 B 我怎样才能做到这一点
  • 使用 pyqtgraph 有效地绘制大型数据集

    我正在尝试使用 pyqtgraph 生成散点图和直方图矩阵 每个散点图的输入 x 和 y 值 是长度大于 1 000 000 的 numpy 数组 生成这些图需要很长时间 2x2 绘图矩阵 gt 1 分钟 matplotlib 实际上生成相
  • ModuleNotFoundError:使用tensorflow 2.6时没有名为“keras”的模块

    我创建了一个新的 conda 环境 conda create name tf tensorflow 2 6 并尝试编译 import tensorflow as tf model tf keras models Sequential 导致
  • 如何设置组合框宽度以适合最大的项目

    我希望我的ComboBox必须适应其width到最长的String Item我的清单中 代码示例 ComboBox model Banana Apple ThisIsTheLongestWordThatIHave Coconut 知道如何做
  • Android 中写入锁定文件

    我将一些数据存储在 SD 卡上的文件上 并从不同的线程读取相同的文件 为了避免读取和写入的竞争条件 我想在两种情况下锁定文件 读取和写入 我心里有两个选择 1 我可以使用同步来做到这一点 2 我可以使用文件锁来做到这一点 我应该选择哪一个
  • 批量插入 mysql - 我可以使用忽略子句吗?有限制吗?批量插入的记录?

    我有一堆数据想要插入 我决定对 mysql 使用批量插入 插入朋友 请求者 好友 值 value1 value2 value2 value1 value3 value4 value4 value3 我想了解以下信息 1 我可以使用忽略吗 例
  • Json允许错误

    这个错误在我们的 MVC 应用程序中随机出现 有时做同样的事情不会 有时却会 有谁知道这是否与任何可以简单解决的问题有关 或者这是否是你们很多人都见过的常见现象 System InvalidOperationException This r
  • 注册 COM 互操作

    当选中构建属性中的 Register for COM Interop 选项时 出现错误 无法注册程序集访问 被拒绝 取消选中该选项时 项目构建时不会出现任何错误 但我的要求是注册 COM 对象 因为我需要在 VB 中使用相同的对象 谁能帮我
  • 与 WPF 和数据绑定一起使用的简单 CRUD

    我是用于 Windows 应用程序开发的 WPF 新手 只是想先将其介绍一下 我正在使用 Visual Studio 2010 和 NET Framework 4 0 我正在开发一个相当简单的管理工具 为了简单起见 假设我正在处理员工数据
  • 全屏嵌入 Bing 地图

    有人知道是否可以全屏嵌入 bing 地图吗 这样地图就可以始终填充背景并简单地在顶部覆盖一些元素 我似乎无法用 100 iframe 实现这一点 而且 bing 的帮助也没有那么有帮助 谢谢 如果我没理解错的话 你想要实现让地图填满整个屏幕
  • C11 结构继承与匿名结构

    I saw this way https stackoverflow com a 14523823 108802实施某种struct匿名继承struct在C11中 想尝试一下 这是我所拥有的 struct struct a int aa s
  • R - 查找行中的所有重复项并替换

    我有一个大数据框 正在尝试查找一行中的重复元素 然后用空字符串替换所有重复值 X1 X2 X3 X4 X5 x 1 2 3 3 4 y 1 1 2 3 4 应该成为 X1 X2 X3 X4 X5 x 1 2 4 y 2 3 4 我可以在单个
  • Cython:将扩展类型序列作为另一个扩展类型的属性,可以访问 cdef 方法

    假设我定义了以下 Cython 类 cdef class Kernel cdef readonly double a def init self double a self a a cdef public double GetValue s
  • JDBI中如何动态绑定表名

    我尝试使用 SELECT COUNT FROM TableName 在 JDBI 中我使用了 bind Tablename MyTable 结果始终在单引号内 SELECT COUNT FROM MyTable 有没有正确的方法来参数化类似
  • 如何通信两个独立的python进程?

    我有两个 python 程序 我想对它们进行通信 它们都是系统服务 都不是由父进程 fork 的 有没有什么方法可以在不使用套接字的情况下做到这一点 例如 通过创建一些队列 gt 序列化它 gt 由其他进程反序列化并执行通信 或者写入执行通
  • Servlet 在某些点击或时间后停止在 Tomcat 服务器上工作

    我的一些 servlet 遇到了一个非常奇怪的问题 下面是我的配置 文件夹 A 在 Tomcat 目录中部署了 X 个 servlet 文件夹 B 在 Tomcat 目录中部署了 Y 个 servlet 经过一定时间或点击文件夹 B 中的任
  • GCC预处理,内置和命令行是做什么用的?

    我很好奇 GCC 预处理步骤的输出 更准确地说 以下两行的目的是什么 1
  • TFIDF 计算混淆

    我在网上找到了以下计算TFIDF的代码 https github com timtrueman tf idf blob master tf idf py 我在函数 def idf word documentList 中添加了 1 这样我就不
  • 最长已排序子序列的长度

    我的未排序数组是 string a new string 10 22 9 33 21 50 41 60 80 在这个数组中 10 22 33 50 60 80按升序排列 所以输出必须是6 一般来说 我想要由数组元素组成并从第一个元素开始的升
  • 将列表绑定到数据源

    我希望能够将列表绑定到列表框数据源 并且当修改列表时 列表框的 UI 会自动更新 Winform 不是 ASP 这是一个示例 private List