带有数据绑定的C#文本框未更新

时间:2014-05-16 22:49:07

标签: c# binding textbox refresh

我有一个带有3个文本框和1个组合框的经典表格。 Combobox显示用户列表,3个文本框应包含有关组合框中所选用户的详细信息。对于选定的用户,我有一个特殊属性(如下所示),我将其用作数据源。这只在第一次运行时才可以。显示表单时,更改组合框中的用户无效。

public partial class UserAdministration : Form
{
    private readonly DataManager _dataManager = DataManager.Instance;
    private User _selectedUser;

    public UserAdministration()
    {
        InitializeComponent();
    }

    private void UserAdministration_Load(object sender, EventArgs e)
    {
        AddUsers();
        textBoxName.DataBindings.Add("Text", _selectedUser, "Name");
        textBoxSurname.DataBindings.Add("Text", _selectedUser, "Surname");
        textBoxPassword.DataBindings.Add("Text", _selectedUser, "Password");
    }

    private void AddUsers()
    {
        var users = _dataManager.UserProvider.GetAll().Select(pair => pair.Value).ToList();
        comboBoxUsers.DataSource = new BindingSource { DataSource = users };
        comboBoxUsers.DisplayMember = "ListViewText";
        if (users.Count > 0)
            comboBoxUsers.SelectedIndex = 0;
    }

    private void comboBoxUsers_SelectedIndexChanged(object sender, EventArgs e)
    {
        _selectedUser = comboBoxUsers.SelectedItem as User;
    }
}

我错过了什么?数据绑定有什么问题?

2 个答案:

答案 0 :(得分:2)

将您的数据源绑定到cb使用此代码:

comboBoxUsers.DataSource = users (directly to you datasource);

将相同的数据绑定到文本框,如下所示:

textbox1.DataBindings.Add("Text", users, "username", true);

唯一的一点是,您需要将两个控件链接到同一个ds实例

答案 1 :(得分:1)

我有一个只有一个文本框的表单,我想绑定到数据库列。

当我使用'属性'将该文本框数据绑定到一列的设置,它为我创建了bindingSource1和表适配器。

当我点击“保存”按钮时,我只是添加了bindingSource1.EndEdit();,然后将其正确保存到数据库中。