Пользовательский макет ContextMenuStrip - PullRequest
0 голосов
/ 20 августа 2009

Я пытаюсь, чтобы элемент управления Windows Forms ContextMenuStrip отображал список стран, всего около 200. В настоящее время он отображает их все по вертикали, что создает длительное время ожидания для прокрутки в страны, расположенные в нижней части списка. Я пробовал возиться со свойством ContextMenuStrip.LayoutStyle, но оно никуда меня не привело. Может ли кто-нибудь есть какие-либо советы для этого? Я также ищу в Google, но не нашел ответа. Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 20 августа 2009

Я не знаю, как использовать ролик мыши или страницу вниз с контекстным меню. Вместо contextMenuStrip вы можете открыть форму, содержащую закрепленный список с 200 странами в нем, и вернуть выбор с помощью глобальной или общедоступной переменной. Formborderstyle = никто не избавится от строки заголовка. Вы можете использовать события, отличные от двойного щелчка, если вы хотите, чтобы он более близко имитировал пользовательский интерфейс контекстного меню.

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 голосов
/ 20 августа 2009

На самом деле это не связано с кодом, но задумывались ли вы о группировке стран по континентам и отображении в подменю? Таким образом, пользователь, вероятно, сможет быстрее добраться до страны, которую хотел. Если не по континентам, то, возможно, более подходящей будет другая группа?

...