Winforms数据绑定到自定义类

时间:2011-10-23 00:56:34

标签: c# winforms data-binding

我试图将一些Winform对象绑定到一个自定义类,更具体地说是我在代码中添加到Form中的自定义类的一个实例。 C#,. NET 2010 Express。

例如,这是类的一个片段,以及UserInfoForm

public class UserInfo
{
    [XmlAttribute]
    public string name = "DefaultName";

    [XmlAttribute]
    public bool showTutorial = true;

    [XmlAttribute]
    public enum onCloseEvent = LastWindowClosedEvent.Exit;
}

public enum LastWindowClosedEvent
{
    MainMenu, 
    Exit, 
    RunInBackground
}


public partial class Form1 : Form
{
    UserInfo userToBind = new UserInfo();

    TextBox TB_userName = new TextBox();
    CheckBox CB_showTutorial = new CheckBox();
    ComboBox DDB_onCloseEvent = new ComboBox();

    public Form1()
    {
        InitializeComponent();
    }
}

现在,我想将这些表单控件的值绑定到userToBind中各自的值,但没有运气。我能找到的所有教程都要么过时了(2002),要么将控件绑定到数据集或其他类型的数据库。

我显然忽视了一些事情,但我还没弄清楚是什么。

非常感谢您提供的任何信息。

更多信息:UserInfo设计为XML友好型,因此可以保存为用户配置文件。 UserInfo将包含其他自定义XML类,所有这些类都嵌套在UserInfo下,并且许多控件只需要访问这些子类。

1 个答案:

答案 0 :(得分:16)

您可以使用控件的DataBindings属性(文本框,复选框...)将绑定添加到特定控件。例如:

public Form1()
{
    InitializeComponent();
    TB_userName.DataBindings.Add("Text", userToBind, "name");
}

另外,IIRC,数据绑定仅适用于properties,因此您首先需要相应地修改UserInfo类。此外,如果您希望在代码中修改对象时自动更新UI,则必须在自定义类中实现INotifyPropertyChanged