当类的属性发生变化时,如何让UI做出反应?
本文关键字:UI 属性 变化 | 更新日期: 2023-09-27 18:03:40
例如,我有这样一个小类:
public class SednaTreeViewItem
{
public string ValueMember { get; set; }
public string DisplayMember { get; set; }
public SednaTreeViewItem(string valueMember, string displayMember)
{
ValueMember = valueMember;
DisplayMember = displayMember;
}
}
然后我在用户控件中使用它:
/// <summary>
/// SednaTreeViewItem that is currently selected in the SednaTreeView.
/// </summary>
public SednaTreeViewItem SelectedItem
{
get
{
if (ultraTree.SelectedNodes.Count > 0)
{
var node = ultraTree.SelectedNodes[0];
return treeNodes.FirstOrDefault(x => x.ValueMember == node.Key);
}
else
return null;
}
set
{
if (value != null)
{
ultraTree.ActiveNode = ultraTree.Nodes[value.ValueMember];
ultraTree.Select();
}
}
}
然后在使用这个用户控件的实际表单中,我想捕获每当文本框中的。text被更改时,在用户控件中也有该文本被更改,这是一个树视图
private void txtInvestor_TextChanged(object sender, EventArgs e)
{
treeViewInvestors.SelectedItem.DisplayMember = txtInvestor.Text;
}
问题是,当我改变。displaymember的值时,没有任何东西可以让treeview知道何时更新节点的显示文本。
你对如何实现这个有什么建议吗?
使用控件绑定:
this.txtInvestor.DataBindings.Add("Text", this, "SelectedItem", false, DataSourceUpdateMode.OnPropertyChanged);
你应该为你的类属性创建一个事件,然后在你的UI类中注册这个事件。
以下链接中公认的答案应该可以帮助你:
c#:基于GET/SET属性为类创建事件