Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将窗体的大小和位置属性绑定到标签的文本属性_C#_.net_Winforms_Data Binding - Fatal编程技术网

C# 将窗体的大小和位置属性绑定到标签的文本属性

C# 将窗体的大小和位置属性绑定到标签的文本属性,c#,.net,winforms,data-binding,C#,.net,Winforms,Data Binding,我习惯于WPF中的数据绑定,WPF对它有完全的支持,我知道它存在,但在Windows窗体中受限制更大 出于好奇,我想做一些真正基础的数据绑定: 将当前表单的大小属性绑定到标签的文本属性 对Location属性执行相同的操作 有可能吗?如果有,如何实施?以下是如何实施: public partial class Form1 : Form { public Form1() { InitializeComponent(); Label position

我习惯于WPF中的数据绑定,WPF对它有完全的支持,我知道它存在,但在Windows窗体中受限制更大

出于好奇,我想做一些真正基础的数据绑定:

将当前表单的大小属性绑定到标签的文本属性 对Location属性执行相同的操作
有可能吗?如果有,如何实施?

以下是如何实施:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        Label positionOutput = new Label { Dock = DockStyle.Top };
        positionOutput.DataBindings.Add("Text", this, "Location");

        Label sizeOutput = new Label { Dock = DockStyle.Top };
        sizeOutput.DataBindings.Add("Text", this, "Size");

        this.Controls.Add(positionOutput);
        this.Controls.Add(sizeOutput);
    }
}
它适用于位置和大小,因为对于这两种情况,Form类都提供了专用的数据绑定事件:LocationChanged和SizeChanged


但是对于宽度或高度,您将不会受益于实时自动更新,因为没有宽度更改或高度更改事件。

您是否看到了以下情况:?您的第一个绑定应该使用位置作为数据成员名称,而不是位置。如果你修复了这个错误,那么它应该会工作。@RogerN Ouch这么愚蠢:但是为什么它也会破坏第二个绑定呢?谢谢。@LarsTech原始代码有缺陷,RogerN发现了。我已经修复了它,并使它成为一个社区wiki,希望它能帮助未来有同样需求的开发人员