Winforms数据绑定到定制类

本文关键字:数据绑定 Winforms | 更新日期: 2023-09-27 18:12:00

我试图将一些Winform对象绑定到自定义类,更具体地说,是我在代码中添加到表单中的自定义类的实例。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下面,许多控件只需要访问这些子类。

Winforms数据绑定到定制类

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

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

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