如何在文本框和列表框/绑定列表框之间进行双向绑定?

时间:2019-12-10 10:45:16

标签: c# data-binding textbox listbox

是否可以将文本框和列表框/绑定列表框相互绑定,以便当有人单击列表框中的项目时,它会进入文本框。

通过将列表框绑定到绑定列表并让文本框填充该列表,我设法使文本框->列表框连接正常工作,因此我可以输入文本框并使其填充列表框。但是现在我需要列表框->文本框的连接才能正常工作。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用数据绑定-

向模型添加属性并实现INotifyPropertyChanged接口:

public class TextHistory : INotifyPropertyChanged 
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string _selectedValue;
    public string SelectedValue 
    { 
        get {return _selectedValue;}
        set
        {
            if (value != _selectedValue)
            {
                _selectedValue= value;
                OnPropertyChanged("SelectedValue");
            }
        }
 }

    protected void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new 
                PropertyChangedEventArgs(propertyName));
    }
}

将列表框数据绑定分配为上面的模型和属性,并将更新模式指定为OnPropertyChanged-https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.datasourceupdatemode?view=netframework-4.8

//this is the binding model you use on your forms on the elements that require it
TextHistory binding = new TextHistory();

listbox.DataBindings.Add("SelectedItem", binding, "SelectedValue", false, DataSourceUpdateMode.OnPropertyChanged);

现在,如果您更新TextHistory.SelectedValue,该值将传播到将其分配为绑定的任何对象。

您可以在此处了解有关数据绑定的更多信息-https://docs.microsoft.com/en-us/dotnet/framework/winforms/windows-forms-data-binding

使用SelectedIndexChanged-

https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.listbox.selectedindexchanged?view=netframework-4.8

为该事件分配功能,以便在框中选择某项时可以更新文本框。

伪装示例-

private void listBox_SelectedIndexChanged(object sender, System.EventArgs e)
{
   string itemSelected = listBox.SelectedItem.ToString();

   textBox.Text = itemSelected;
}
相关问题