C#文本框绑定数据后未更新

3

我有一个经典的表单,其中包含3个文本框和1个组合框。 组合框显示用户列表,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;
    }
}

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


组合框数据源更新模式设置为什么? - jac
ComboBox的数据源类型是Object,所以它不能有更新模式,是吗? - Tomask
我错过了您直接使用对象进行绑定的事实。问题出在并发管理器上。看看这个答案是否能帮到您。http://stackoverflow.com/questions/2209290/binding-textboxes-to-properties-of-a-combobox-selecteditem - jac
2个回答

4

要将您的数据源绑定到cb,请使用以下代码:

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

要将相同的数据绑定到文本框,请按照以下方式进行:

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

唯一的要点是,你需要将这两个控件链接到同一个数据集实例。

完美,这正是我在寻找的。顺便问一下,它内部使用的是 Combobox.SelectedItem,对吧? - Tomask

3

我有一个仅包含文本框的表单,我想将其绑定到数据库列。

当我使用“属性”设置将该文本框绑定到一个列时,它为我创建了bindingSource1和表适配器。

当我点击保存按钮时,我只需添加bindingSource1.EndEdit();,然后它就可以正确保存到数据库中。


在我的情况下,我没有BindingSource,并且因为当调用我的Save()函数时,我的文本框还没有失去焦点,所以绑定还没有同步。我不得不调用TextBox1.DataBindings.Item(NameOf(TextBox1.Text)).WriteValue()来强制同步。 - CrazyIvan1974

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接