如何绑定来自单独列表框的数据?

How do I bind a data from a separate listbox?

我有两个列表框,我有一个按钮可以在消息框中显示 selected 项目,但我需要从两个列表框中 select。有没有办法将第二个列表框的数据绑定到第一个列表框。

这是界面:

这是 selected

时数据的显示方式

我所说的绑定数据的意思是我希望 200 卡路里的价值与米饭保持一致,即使其他东西是 selected

Public Class Form1
Public strfood As String

Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click

    Dim calory As Single

    strfood = InputBox("Enter food item", "Food List")
    calory = InputBox("Enter calory", "Calory List")

    FoodList.Items.Add(strfood)
    CaloryList.Items.Add(calory)
End Sub

Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click

    Dim selecteditem As String = FoodList.SelectedItems(0).ToString
    Dim selectedcalory As String = CaloryList.SelectedItems(0).ToString

    MessageBox.Show("Food :" + selecteditem & " " & "Calories :" + selectedcalory)
End Sub

同意djv的建议;这些东西应该在一个网格中

  • 右键单击解决方案资源管理器中的项目
  • 添加新项目
  • 添加数据集类型的文件
  • 双击它,出现一个空的表面。将数据集重命名为合理的名称,例如 CalTrackerDataSet(道具网格)
  • 右键单击表面并选择 Add..DataTable
  • 将其命名为食品
  • 右击DataTable,选择Add..Column
  • 将其命名为食物
  • 添加另一个名为卡路里的列,并在属性网格中将其类型设置为 Int32(整数)
  • 保存
  • 转到您的表格
  • 打开数据源工具面板(在视图菜单上,在其他 Windows 内)并找到 Foods 节点,将其拖到您的表单中
  • 一个名为 CalTrackerDataSet 的项目出现在底部托盘中 - 将其更改为 CalTrackerDS - 我推荐这个纯粹是因为当 vb 将事物的实例命名为与类型相同时,这是一个很大的混淆点

您不再需要 BtnAdd 代码,因为只需在网格中键入即可创建新行,但如果您确实想以编程方式添加这样的行,您将:

Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click

    Dim f = InputBox("Enter food item", "Food List")
    Dim c = Convert.ToInt32(InputBox("Enter calory", "Calory List"))

    CalTrackerDS.Foods.AddFoodsRow(f,c)
End Sub

并且显示用户点击的行更加微妙;称为 BindingSource 的设备跟踪当前行。因为它适用于范围广泛的数据源,所以它 returns 非常基本的对象,隐藏了绑定数据的细节,因此您必须强制转换才能将它们返回

Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click

    Dim cur and DirectCast(DirectCast(FoodsBindingSource.Current, DataRowView).Row, CalTrackerDataSet.FoodsRow) 

    MessageBox.Show("Food :" & cur.Food & " " & ", Calories :" & cur.Calories)
End Sub