gpt4 book ai didi

c# - 像在 WPF 中一样在 winform 中绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 15:45:37 29 4
gpt4 key购买 nike

我想将 winform 的窗体的 Width 属性绑定(bind)到标签上的文本,以便标签的文本在我进行的每次鼠标移动时得到更新。目前,我只在单击表单上的某些元素时才实现更新,但没有连续更新(例如,如果您在 Resize 处理程序中更改文本)。这个东西怎么做?

最佳答案

您可以通过这样做绑定(bind)到 Width 属性:

label1.DataBindings.Add(new Binding("Text", this, "Width"));

问题是表单没有通知框架属性已经改变。您最简单的最佳选择可能就是按照肉和土 bean 的方式来做:

protected override void OnResize(EventArgs e)
{
base.OnResize(e);
label1.Text = this.Width.ToString();
}

编辑: 好吧,如果你真的想使用数据绑定(bind),这里有一个可行的方法(但就像伸手绕过你的头来挠你的耳朵):

将对象数据源添加到表单并将数据源设置为类型“System.Windows.Forms.Form”。

接下来,添加一些代码:

public Form2()
{
InitializeComponent();

this.formBindingSource.DataSource = this;

Binding binding = new Binding("Text", this.formBindingSource, "Size", true);

binding.Format += new ConvertEventHandler(binding_Format);

label1.DataBindings.Add(binding);
}

void binding_Format(object sender, ConvertEventArgs e)
{
Size size = (Size)e.Value;
e.Value = size.Width.ToString();
}

所以就像我说的,这完全是矫枉过正,但它确实有效。

关于c# - 像在 WPF 中一样在 winform 中绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032194/

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