回答
创建这种效果的最简单方法是使用三个控件 - 编辑,按钮(在编辑的右侧,下拉图标)和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