我怎样才能使checkBox下拉列表? 我有一个Windows应用程序(VB.NET)和checkBoxlist控件是不是真正的选项与我的表单上的可用空间。
谢谢。
运行在Linux上的.Net
阅读事件日志从最新到最旧
通过.NET中的svchost.exe共享stream程服务
什么shell动词用于双击行动?
C# – 与if语句使用正则expression式
创建这种效果最简单的方法是使用三个控件 – 一个编辑,一个按钮(在编辑的右边,下拉图标)和一个checkBoxlist,就像现在使用的那样。
将复选框置于编辑位置,使其宽度与编辑和编辑旁边的按钮相同,并使其不可见。 现在,添加代码到按钮来:
如果清单框不可见并使其不可见(如果翻转.Visible的值),则使清单框可见。
调用代码来创建已检查内容的“汇总”版本,而不是在编辑中检查并显示它。 例如,如果您的“下拉列表”包含颜色名称,则可能会让您的代码创建一个以逗号分隔的已检查颜色列表,并在编辑中显示该列表。
你可以进一步把这个checkBoxlist放到一个面板容器中,并在“下拉菜单”中添加一些按钮来执行在你的应用程序中可能适用的任何特殊功能(全选,全部取消,不管)。
你必须去所有者来获得这种功能。
如果您的表单空间不足,我会建议您首先查看是否可以重构GUI以使其更简单。
我发现一个更简单的解决方案,并认为我会发布,如果有人像我这样搜索可以使用它。 我所做的是将单列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
当ColumnClick事件点击显示/隐藏列表按钮时,它会处理,而ItemChecked事件让我可以处理任何需要响应复选框更改的事件。 通过访问“lvList.Items(iRowNum).Checked”值来读取每个值,其中iRowNum是您要检查的行。 希望这有助于下一个需要这样的人。
hground
我怀疑你的问题可能会被编辑,因为目前还不是很清楚。 我猜你想在窗体上的下拉列表控件,但是当列表下拉你有复选框作为其中的选项? 如果是这样,我怀疑你可能正在看一个自定义的控件集(例如Telerik控件将允许你为一个RadComboBox模板),但我不认为有任何标准的控件,将允许这一点。
我已经找到了一个CodeProject的文章,如何做到这一点(更像是“已经做了”,但至少我可以捅了一下代码,了解他是如何做到的),我不知道我以前怎么错过了。
这是链接 。
为了这个目的使用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
你可能想要根据字体大小来调整上述字面值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。