具有数据绑定(bind)的 C# 文本框未更新

标签 c# binding textbox refresh

我有一个包含 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;
    }
}

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

最佳答案

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

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

要将相同的数据绑定(bind)到文本框,请这样做:

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

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

关于具有数据绑定(bind)的 C# 文本框未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23705629/

相关文章:

c# - unsigned long 和 unsigned int 之间有什么区别?这两种类型在 C# 中应如何编码(marshal)?

c# - 纯粹在 xaml 中连接文字和静态资源字符串

c# - 对于 C# 中的用户控件,我收到类似 "constructor on type ' system.string' cannot found"的错误?

jquery - IE10 - 文本框属性禁用/启用

javascript - 在 javascript 中使用 C# 正则表达式

c# - 如何防止我的对话框多次打开?

c# - 在解析 XDocument 时处理空 XElement

WPF GridSplitter - 保存和恢复位置并按比例拆分

Python XML 绑定(bind)

css - 仅统一文本字段 CSS/Bootstrap