我有
private BindingList<string> log;
我的表单上有多行logTextBox。 如何将“日志”列表绑定到该文本框?
我不需要2路绑定。从日志绑定到texbox的一种方式就足够了。
答案 0 :(得分:1)
您无法直接从BindingList<string>
绑定到TextBox
,因为Lines
中的TextBox
属性属于string[]
而非BindingList<string>
您需要string[]
属性,并且属性更改通知。
以下是您如何操作的示例。
public class LinesDataSource : INotifyPropertyChanged
{
private BindingList<string> lines = new BindingList<string>();
public LinesDataSource()
{
lines.ListChanged += (sender, e) => OnPropertyChanged("LinesArray");
}
public BindingList<string> Lines
{
get { return lines; }
}
public string[] LinesArray
{
get
{
return lines.ToArray();
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
然后在您的表单/用户控件
中private LinesDataSource dataSource = new LinesDataSource();
private void Setup()
{
textBox.DataBindings.Add("Lines", dataSource, "LinesArray");
Populate();
}
private void Populate()
{
dataSource.Lines.Add("whatever");
}