gpt4 book ai didi

c# - 如何将 Windows 窗体的自定义属性绑定(bind)到第二个属性?

转载 作者:行者123 更新时间:2023-11-30 22:46:26 24 4
gpt4 key购买 nike

我想将 Windows 窗体的自定义属性绑定(bind)到第二个属性,因此当我更新前者时,后者获得相同的值。

这是我正在尝试做的最简单的例子:

public partial class Form2 : Form
{
public string MyTargetProperty { get; set; }
public string OtherProperty { get; set; }

public Form2()
{
InitializeComponent();
this.DataBindings.Add("MyTargetProperty", this, "OtherProperty");
}

private void button1_Click(object sender, EventArgs e)
{
MyTargetProperty = "test";
Console.WriteLine("OtherProperty " + OtherProperty);
}
}

当我单击 button1 时,我应该能够看到“OtherProperty”与“MyTargetProperty”具有相同的值。难道我做错了什么?我错过了什么吗?

最佳答案

您的表单需要为 MyTargetProperty 实现 INotifyPropertyChanged

例子:

class FooForm : Form, INotifyPropertyChanged
{
private int myTargetProperty;

public int MyTargetProperty
{
get { return this.myTargetProperty; }
set
{
this.myTargetProperty = value;

this.OnPropertyChanged(
new PropertyChangedEventArgs("MyTargetProperty"));
}
}

public event PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
var evt = this.PropertyChanged;

if (evt != null)
evt(this, e);
}
}

然后你需要像这样添加绑定(bind):

this.DataBindings.Add(
"OtherProperty",
this,
"MyTargetProperty",
false,
DataSourceUpdateMode.Never);

这将执行单向绑定(bind)。 MyTargetProperty 永远不会在 OtherProperty 更改时更新。如果您需要双向绑定(bind),您可以更改 DataSourceUpdateMode 并为 OtherProperty 实现一个 PropertyChanged

关于c# - 如何将 Windows 窗体的自定义属性绑定(bind)到第二个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2651683/

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