我正在尝试创建一个弹出的控件(第一次)并向用户显示两列:左侧的列有标签,右侧的列有空文本框供用户输入。
例如:
---------------------
Ingredient | Quantity
---------------------
Carrots |
---------------------
Apples |
---------------------
Bananas |
等等。它们能够一起滚动非常重要。
我不知道从哪里开始:/我应该看看桌子吗?列表框? 我知道我不能使用文本框,因为每次调用控件时“成分”的数量都会改变
答案 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)
在这种情况下,DGV会将用户编辑保存回基础数据源 - 配方列表。
' elsewhere
For Each item In Recipe
Console.WriteLine(item.ToString)
Next
结果:
2每个胡萝卜
1茶匙苹果 1.5杯香蕉
3 Hehelock的蒲式耳
带有动态构建的UserControl
控件的TextBox
也可以使用,但您可能仍需要一个集合来存储数据。如果数据来自数据库,DGV仍然可以正常工作,只需使用DataTable
作为源而不是Recipe
集合。