Привязка данных Winforms к пользовательскому классу - PullRequest
9 голосов
/ 23 октября 2011

Я пытаюсь привязать некоторые объекты 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, и многим элементам управления потребуется только доступ к этим дочерним классам.

1 Ответ

16 голосов
/ 23 октября 2011

Вы можете использовать свойство DataBindings ваших элементов управления (текстовое поле, флажок ...), чтобы добавить привязку к определенному элементу управления. Например:

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

Кроме того, IIRC, привязка данных работает только для свойств , поэтому сначала вам нужно соответствующим образом изменить класс UserInfo. Более того, если вы хотите, чтобы пользовательский интерфейс обновлялся автоматически при изменении ваших объектов в коде, вы должны реализовать INotifyPropertyChanged в своих пользовательских классах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...