的WinForms。设计时绑定到子控件属性的数据

时间:2016-12-21 13:35:52

标签: c# winforms

我正在开发自己的“MyTextBox”控件

public class MyTextBox:UserControl
{
    TextBox textBox;
    Button button;

    public MyTextBox()
    {
         this.textBox = new TextBox();
         this.button = new Button();
         this.button.Click += button_Click;
         this.Controls.Add(this.textBox);
         this.Controls.Add(this.button);
    }

    public TextBox TextBox
    {
        get
        {
            return this.textBox;
        }
    }
}

现在在设计时我将“MyTextBox”放在表单上。在Designer的 PropertyGrid 中,我可以看到myTextBox1控件的“TextBox”属性在子网格中可见。

我还在表单中添加了一个“BindingSource”来进行数据绑定。

子网格为绑定提供“Text”属性,我将它绑定到bindingSource1,就像我们通常绑定texbox的“Text”属性一样。我期待以下代码由Designer生成:

    this.myTextBox1.TextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bindingSource1, "FullName"));

上面的演练没有给出这种效果。我想知道是否有办法做到这一点。我的目的是在设计时数据绑定TextBox的“Text”属性,由MyTextBox进行childed。

1 个答案:

答案 0 :(得分:1)

不要太早放弃。 Windows窗体最有用的功能之一是数据绑定。根据您的要求,首先将TextBox属性更改为:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public TextBox TextBox
{
    get
    {
        return textBox1;
    }
}

然后以这种方式绑定设计师Text用户控件的TextBox属性:

enter image description here