带输入的两列列表框

时间:2017-02-14 18:35:29

标签: vb.net

我正在尝试创建一个弹出的控件(第一次)并向用户显示两列:左侧的列有标签,右侧的列有空文本框供用户输入。

例如:

---------------------
Ingredient | Quantity
---------------------
Carrots    |         
---------------------
Apples     |
---------------------
Bananas    |

等等。它们能够一起滚动非常重要。

我不知道从哪里开始:/我应该看看桌子吗?列表框? 我知道我不能使用文本框,因为每次调用控件时“成分”的数量都会改变

1 个答案:

答案 0 :(得分:1)

我们对用例或(真实)数据和来源了解很多。显示和编辑不同数量项目的一种方法是DataGridView。如果它在模态对话框中,则弹出':

' form level collection of things
Private Recipe As List(Of RecipeItem)
...

' prepare the data and display:
Recipe = New List(Of RecipeItem)

Recipe.Add(New RecipeItem With {.Ingredient = "Carrot"})
Recipe.Add(New RecipeItem With {.Ingredient = "Apple"})
Recipe.Add(New RecipeItem With {.Ingredient = "Banana"})
Recipe.Add(New RecipeItem With {.Ingredient = "Hemlock"})
...
Dim UmCol As New DataGridViewComboBoxColumn
UmCol.DataPropertyName = "UnitMeasure"
UmCol.DataSource = [Enum].GetValues(GetType(UnitMeasure))

dgvDD.DataSource = Recipe
dgvDD.Columns.Remove("UnitMeasure")
dgvDD.Columns.Add(UmCol)

enter image description here

在这种情况下,DGV会将用户编辑保存回基础数据源 - 配方列表。

' elsewhere
For Each item In Recipe
    Console.WriteLine(item.ToString)
Next

结果:

  

2每个胡萝卜
  1茶匙苹果   1.5杯香蕉
  3 Hehelock的蒲式耳

带有动态构建的UserControl控件的TextBox也可以使用,但您可能仍需要一个集合来存储数据。如果数据来自数据库,DGV仍然可以正常工作,只需使用DataTable作为源而不是Recipe集合。