2009-08-19 108 views
0

我试图让Windows窗体ContextMenuStrip控件显示一个约200个国家/地区的列表。目前,它将全部垂直显示,这会造成等待时间过长,无法滚动到列表底部附近的国家。我试着用ContextMenuStrip.LayoutStyle属性搞乱,但它并没有让我获得任何地方。可能有人对此有任何提示吗?我也搜索谷歌,但还没有找到答案。谢谢你的帮助!ContextMenuStrip自定义布局

回答

0

我不知道使用鼠标滚轮或下拉菜单的方式。您可以打开一个包含200个国家的停靠列表框的表单,并通过全局变量或公共变量返回选择,而不是使用contextMenuStrip。 Formborderstyle = none将摆脱标题栏。如果您希望它更接近模仿上下文菜单用户界面,则可以使用doubleclick以外的事件。

Public Class Form1 
    Public selectedCountry As String 
    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown 
    If e.Button = Windows.Forms.MouseButtons.Right Then Form2.ShowDialog() 
    End Sub 
End Class 

Public Class Form2 
    Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick 
    Form1.selectedCountry = ListBox1.SelectedItem 
    Me.Close() 
    End Sub 
End Class 
0

这不是一个真正的代码相关的答案,但你有没有想过按洲划分国家并在子菜单中显示它?这样用户可能能够更快地到达他们想要的国家。如果不是靠大陆,那么也许另一个分组会更合适?

+0

想过它 - 但是,业务需求并没有要求。他们想要一个完整的字母表列表。如果没有办法,那么我们可能必须走你所建议的路线。 – bbqchickenrobot 2009-08-20 00:35:38

+0

如何按字母顺序将它们分组? A-F G-P等? – Joseph 2009-08-20 00:42:32