如何绑定来自单独列表框的数据?
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
我有两个列表框,我有一个按钮可以在消息框中显示 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