回答
創建這種效果的最簡單方法是使用三個控件 - 編輯,按鈕(在編輯的右側,下拉圖標)和checkboxlist。
將複選框列表置於編輯下方,使其寬度與編輯和編輯旁邊的按鈕相同,並使其不可見。現在,該按鈕添加代碼:
充分利用checklistbox可見,如果它是不可見的,並使其不可見的,如果它是可見的(即,翻轉。可見的值)。
調用代碼來創建被檢查內容的「彙總」版本,而不是檢查並在編輯中顯示它。例如,如果您的「下拉列表」包含顏色名稱,則可能會讓您的代碼創建一個以逗號分隔的已檢查顏色列表,並在編輯中顯示該列表。
您可以藉此遠一點,把的CheckBoxList到面板容器,並添加小按鈕到「下拉菜單」來執行任何特殊功能可能會在您的應用適當地(可複選,取消所有,任何)。
你必須去所有者繪製才能獲得這種功能。
如果您的表單空間不足,我會建議先查看是否可以重構GUI以使其更簡單。
重構gui的+1。 – 2009-09-29 13:07:10
我懷疑你的問題可能被編輯,因爲它目前還不是很清楚。我猜你想要在窗體上的下拉列表控件,但是當列表下拉時,你有複選框作爲其中的選項?如果是這樣,我懷疑你可能正在查看一組自定義的控件(例如Telerik控件將允許你爲一個RadComboBox模板),但我不認爲有任何標準控件可以允許這樣做。
是的,我想用組合框填充下拉列表,就像在excel 2007中的過濾器對話框一樣。 購買它是有點沒用,我的應用程序的整個點是練習和學習在vb.net做一些事情 – Iulian 2009-09-29 15:08:46
我傾向於在asp.net世界中工作,但以下內容是在谷歌搜索中找到的 - 也許其中一些代碼可以幫助您學習,特別是SO上的第一個線程看起來不錯: http :http://stackoverflow.com/questions/859227/looking-for-a-wpf-combobox-with-checkboxes http://wpfcolorpicker.codeplex.com/ http://blogs.msdn.com/llobo/archive/ 2006/10/25/Split-Button-in-WPF.aspx http://www.eggheadcafe.com/tutorials/aspnet/e8585e81-34c8-4808-ae3e-b8b35d738842/wpf-datagrid-as-combobox.aspx – 2009-09-30 08:46:11
你如何模仿RadComboBox? – 2012-07-25 04:08:58
我已經找到了一個關於如何做到這一點的CodeProject文章(更像是「已經做成」,但至少我可以戳代碼,並瞭解他是如何做到的) 我不知道我是如何錯過早。
這裏是link。
我發現一個更簡單的解決方案,並認爲我會發布它,如果有人像我一樣搜索可以使用它。我所做的是將單列Listview插入到我的表單中,其中View設置爲Detail模式,MultiSelect設置爲True,Checkboxes設置爲True。以下代碼將允許列表下拉。由於我有多重選擇,因此不需要像在組合框中那樣顯示選定值,因此下拉菜單顯示爲顯示/隱藏列表的按鈕。在下面的代碼中,我將高度除以4,因爲我的列表是靜態的,那就是我列表中有多少個複選框。如果你有一個動態列表,那麼只需從列表視圖中讀取項目的數量並使用它。你可能需要使用它來獲得你想要的外觀。下面是我使用的事件:
Dim iListHt As Integer 'Set global variable to save height of list
'Save initial height of list and then collapse it to a button
iListHt = lvList.Height
lvList.Height = CInt(iListHt/4)
lvList.Columns(0).Text = "Display List"
Private Sub lvList_ColumnClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles lvList.ColumnClick
Dim iHt As Integer = lvList.Height
If (iHt < iListHt) Then
lvList.Height = iListHt
lvList.Columns(0).Text = "Hide List"
Else
lvList.Height = CInt(iHt/4)
lvList.Columns(0).Text = "Display List"
End If
lvList.Refresh()
End Sub
Private Sub lvList_ItemChecked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemCheckedEventArgs) Handles lvList.ItemChecked
'Read values from list check boxes and update settings
UpdateSettings()
End Sub
當他們點擊什麼樣子的顯示/隱藏列表按鈕和ItemChecked事件讓我來處理任何需要在複選框的變化作出反應的ColumnClick事件句柄。每個值都通過訪問「lvList.Items(iRowNum).Checked」值來讀取,其中iRowNum是要檢查的行。希望這有助於下一個需要這樣的人。
hground
道具hground使用一個ListView用於這一目的。我會盡力給出他的概念的改進版本。
Private Shared Sub Expand(lv As ListView)
Dim expandedHeight As Integer = 20 + (15 * lv.Items.Count)
lv.Height = expandedHeight
End Sub
Private Shared Sub Contract(lv As ListView)
Dim contractedHeight As Integer = 20
lv.Height = contractedHeight
End Sub
Private Sub uiIssuesStatusListView_GotFocus(sender As Object, e As System.EventArgs) _
Handles uiIssuesStatusListView.GotFocus, uiIssuesStatusListView.ColumnClick
Call Expand(uiThisListView)
End Sub
Private Sub uiIssuesStatusListView_LostFocus(sender As Object, e As System.EventArgs) _
Handles uiIssuesStatusListView.LostFocus, uiIssuesStatusListView.MouseLeave
Call Contract(uiThisListView)
End Sub
您可能想根據字體大小或其他來調整上述文字值。
- 1. 帶有複選框的PHP列表框
- 2. Wicket:帶有複選框的DropDown框,用於多選
- 3. 默認DropDown和複選框列表值
- 4. Symfony2 - 帶有複選框列的表格
- 5. 帶有複選框的XAML列表框,選中複選框查看它
- 6. 帶有複選框的C#WPF列表框 - 選擇顯示
- 7. 帶圖像的複選框列表
- 8. 帶複選框的聯繫人列表
- 9. 帶複選框的Flex列表組件
- 10. 帶有複選框的jqGrid列
- 11. 帶有複選框和單一檢入的列表框Silverlight
- 12. 帶有警報對話框中複選框的列表視圖
- 13. 帶有複選框的列表視圖正在檢查多個複選框
- 14. 帶有複選框的Android列表視圖如何訪問複選框
- 15. 帶有複選框的Eclipse插件首選項列表
- 16. 帶有複選框的動態表格
- 17. MediaWiki中帶有複選框的表格
- 18. 帶有複選框列表的表單(最佳實踐)
- 19. 帶有複選框的Gridview
- 20. 帶有複選框的DataGridTemplateColumn
- 21. 帶有複選框的ListView
- 22. 帶有複選框的ListView
- 23. 2行列表XML帶複選框
- 24. DropDown列表選擇
- 25. 詞典<object,bool>作爲帶有複選框的列表
- 26. 帶有複選框的Android自定義列表視圖?
- 27. 帶有複選框問題的Android自定義列表視圖
- 28. 顯示目錄中帶有複選框的文件列表
- 29. 帶有複選框事件的單獨列表視圖項目
- 30. 帶有列表視圖標籤的複選框
使用這種方法(注意:不一定推薦),我會堅持下拉列表,但是當下拉部分打開時,覆蓋複選框列表。 – 2009-09-29 15:37:31
這是一個非常好的主意,非常感謝 – Iulian 2009-09-29 19:08:54