【问题标题】:Updating multiple data when changing ListBox selection in Windows Forms在 Windows 窗体中更改列表框选择时更新多个数据
【发布时间】:2016-06-16 04:00:41
【问题描述】:

我是数据库和 Windows 窗体的新手,无法找到解决方案。我有一个带有 ListBox 的 Windows 窗体应用程序。 ListBox 包含当前数据库中的所有条目。当我选择一个条目时,我想显示该选择的所有列。例如,如果我有一个“人”条目表,并且每个条目都有年龄、体重、身高等列的数据,我想更改表单上的标签以对应选择的统计信息。

(我已经看到数据绑定可以做到这一点,但这只能与一个显示成员一起使用。)

基本上:

private void currentItems_SelectedIndexChanged(object sender, EventArgs e)
{
    // something like:
    // label1.Text = selectedId.ColumnValue1;
    // label2.Text = selectedId.ColumnValue2;
    // ...
}

作为一个子问题,我将只为这个应用程序处理一个小型数据库。有没有办法只需要调用一次 Select 语句,将所有数据放入 DataTable,然后从中提取?我想不断地从数据库调用会很慢。

【问题讨论】:

    标签: c# winforms datatable listbox


    【解决方案1】:

    感受数据绑定的力量!

    将此代码放入表单构造函数。

    public Form1()
    {
        //InitializeComponent();
    
        var dataTable = new DataTable();
    
        // Assume that DataTable is populated from database.
        dataTable.Columns.Add("Name", typeof(string));
        dataTable.Columns.Add("Age", typeof(int));
    
        dataTable.Rows.Add("John", 42);
        dataTable.Rows.Add("Smit", 33);
    
    
        var dataGridView = new DataGridView { Parent = this, Dock = DockStyle.Top };
        dataGridView.DataSource = dataTable;
    
        var listBoxNames = new ListBox { Parent = this, Top = dataGridView.Bottom + 10 };
        listBoxNames.DataSource = dataTable;
        listBoxNames.DisplayMember = "Name";
    
        var labelName = new Label { Parent = this, Top = listBoxNames.Top, Left = listBoxNames.Right + 20 };
        labelName.DataBindings.Add("Text", dataTable, "Name");
    
        var textBoxName = new TextBox { Parent = this, Top = labelName.Bottom + 10, Left = labelName.Left };
        textBoxName.DataBindings.Add("Text", dataTable, "Name");
    
        var numericAge = new NumericUpDown { Parent = this, Top = textBoxName.Bottom + 10, Left = textBoxName.Left };
        numericAge.DataBindings.Add("Value", dataTable, "Age");
    }
    

    现在您可以在 DataGridView 和 ListBox 中选择数据。

    您还可以编辑DataGridView和TextBox和NumericUpDown中的数据。

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 2021-11-23
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      相关资源
      最近更新 更多