c# - 将 TextBox 文本值绑定到 ComboBox.SelectedItem,并从 ComboBox 的选定项目列表到另一个 ComboBox
问题描述
所以我有一个“Worker”类和一个绑定到 ComboBox 的 BindingList。
workers = new BindingList<Worker>();
//// .. An "Add" button is somewhere there to add "Worker" objects to the list
//ComboBox Workers List
cbWorkersList.DataSource = workers;
cbWorkersList.DisplayMember = "Name";
我想将 TextBox 中的“Text”字段绑定到 ComboBox 中所选“Worker”对象的“Name”属性。
现在我已经通过使用“cbWorkersList_SelectedIndexChanged”事件处理程序来完成它,手动修改 txtWorkerName.Text 属性:
private void cbWorkersList_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbWorkersList.SelectedItem != null)
{
txtWorkerName.Text = workers[workers.IndexOf((Worker)cbWorkersList.SelectedItem)].Name;
}
}
我试图以这种方式绑定 TextBox:
InitializeComponent();
txtWorkerName.DataBindings.Add("Text", cbWorkersList, "Text");
但是,如果我单击列表中的其他项目,它只会更新 TextBox,如果我使用箭头键更改选择,则 TextBox 文本字段不会更改。
有没有办法真正绑定它们,以便如果选择了 ComboBox 项目,文本字段将相应更改?
在这个主题上,我还有其他 2 个 ComboBox,我想将 1 绑定到其他人的 ComboBox 对象内的列表。我想要的是具有以下逻辑的解决方案:
cbPositions.Items = ((<Shift>)cbShifts.SelcetedItem).PositionsList
当 cbPositions 是一个 ComboBox 时,应该填充“Position”对象。cbShifts 是一个 ComboBox,其中填充有“Shift”对象,其中每个“Shift”包含一个位置列表。
如何绑定它们,以便每次从列表中选择另一个 Shift 时,Positions ComboBox 将使用 Shift.PositionList 中的 Position 对象填充?
而且,我想知道是否可以将 ComboBox 的“项目”绑定到列表(在此示例中为我的工作人员列表),而不是使用代码,而是在设计器中(应用程序设置或数据绑定)?
解决方案
推荐阅读
- python - Pyarrow.lib.Schema 与 pyarrow.parquet.Schema
- json - Haystack for Django 框架的替代品是什么?
- angular - 使用 Nativescript 将项目文件中的图像加载到 ImageSource
- javascript - iView 尝试导入时未定义错误
- gtk - 从 XFCE 面板中移除阴影
- json - 如何查询一个条目的所有相关信息?
- enums - 我可以使用枚举作为另一个枚举的值检查器吗?
- powershell - 如何引用 CSV 中的多行来卸载软件?
- javascript - 将条目添加到树后,它不会显示。extjs
- python - Nan的单元测试检查