gpt4 book ai didi

c# - 文本框和表单标题之间的简单数据绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 15:47:46 25 4
gpt4 key购买 nike

我是 C# 和数据绑定(bind)的新手,作为实验,我试图将表单标题文本绑定(bind)到属性:

namespace BindTest
{
public partial class Form1 : Form
{
public string TestProp { get { return textBox1.Text; } set { } }

public Form1()
{
InitializeComponent();
this.DataBindings.Add("Text", this, "TestProp");
}
}
}

不幸的是,这不起作用。我怀疑这与不发送事件的属性有关,但我对数据绑定(bind)的了解还不够,无法确切知道原因。

如果我将标题文本直接绑定(bind)到文本框,像这样:

this.DataBindings.Add("Text", textBox1, "Text")

然后它就可以正常工作了。

如能解释第一个代码示例为何不起作用,我们将不胜感激。

最佳答案

您必须实现 INotifyPropertyChanged 接口(interface)。试试下面的代码,看看当您从 setter 中删除 NotifyPropertyChanged("MyProperty"); 时会发生什么:

private class MyControl : INotifyPropertyChanged
{
private string _myProperty;
public string MyProperty
{
get
{
return _myProperty;
}
set
{
if (_myProperty != value)
{
_myProperty = value;
// try to remove this line
NotifyPropertyChanged("MyProperty");
}
}
}

public event PropertyChangedEventHandler PropertyChanged;

private void NotifyPropertyChanged(string propertyName)
{
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

private MyControl myControl;

public Form1()
{
myControl = new MyControl();
InitializeComponent();
this.DataBindings.Add("Text", myControl, "MyProperty");
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
myControl.MyProperty = textBox1.Text;
}

关于c# - 文本框和表单标题之间的简单数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3208616/

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