gpt4 book ai didi

winforms - 将 WinForms ListBox 绑定(bind)到对象属性

转载 作者:行者123 更新时间:2023-12-01 07:57:38 25 4
gpt4 key购买 nike

我是第一次进行一些 WinForms 编码,并且正在尝试使用数据绑定(bind)。

我有一个列表框,我将其绑定(bind)到 Controller 对象中的字符串数组,我还想将列表框中的 SelectedItem 绑定(bind)到 Controller 上的另一个字符串属性,以便我可以跟踪它。

listBox.DataSource = controller.ItemNames;
listBox.DataBindings.Add(new Binding("SelectedItem", controller, "CurrentItem"));

我希望 Controller 上的 CurrentItem 属性在用户选择列表框中的不同项目时立即更新,但似乎它只会在焦点移动到表单上的另一个项目时才会更新。

这是预期的行为吗?有没有办法立即更新 SelectedItem 绑定(bind)?

最佳答案

一般来说,如果您需要立即更新您的模型,您需要按照另一篇文章中的建议使用 Use DataSourceUpdateMode.OnPropertyChanged。

但它不适用于 ListBox.SelectedItem。原因是因为 ListBox 没有公开 SelectedItemChanged 事件(但公开了 SelectedValueChanged 和 SelectedIndexChanged),所以 DataBinding 不知道控件中发生了什么变化。

作为解决方法,您可以将以下几行放在控件的设置代码中:

listBox.SelectedIndexChanged +=
(s, args) => listBox.DataBindings["SelectedItem"].WriteValue();

关于winforms - 将 WinForms ListBox 绑定(bind)到对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1815828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com