2017-02-14 58 views
1

我在創建一個控件(第一次)彈出並顯示用戶兩列:左邊的列有標籤,右邊的列有空用於用戶輸入的文本框。帶輸入的雙列表框

例如:

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

等。他們能夠一起滾動很重要。

我不知道從哪裏開始:/我應該看錶嗎?列表框? 我知道我不能使用文本框,因爲每次調用控件時「成分」的數量都會發生變化

+0

[TableLayoutPanel](https://msdn.microsoft.com/en-us/library/system.windows.forms.tablelayoutpanel(v = vs.110).aspx) – Steve

+1

除了「彈出」部分,它聽起來像(小)datagridview – Plutonix

+0

「彈出」部分是當用戶控件被調用並顯示時。非常感謝@Plutonix!我絕對應該花一些時間瀏覽視覺工作室的界面 – robotHamster

回答

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.5杯的每個胡蘿蔔
1茶匙 3鐵杉

蒲式耳

UserControl與動態建立TextBox控制也可以工作,但你可能仍然需要一個集合來存儲數據一個。如果數據來自數據庫,則DGV仍然可以正常工作,只需使用DataTable作爲源而不是Recipe集合。

+1

提醒我不要接受邀請,在你家吃飯;) – Blackwood

+1

它有助於胡蘿蔔蘋果香蕉燉(?布丁?)味道像雞肉@Blackwood – Plutonix