Вот способ заставить его работать - если Windows Forms.
Во-первых, определить этот класс:
Public Class ComboAction
Public Sub New(ByVal text As String, ByVal action As Action)
_text = text
_action = action
End Sub
Private _text As String
Public ReadOnly Property Text() As String
Get
Return _text
End Get
End Property
Private _action As Action
Public ReadOnly Property Action() As Action
Get
Return _action
End Get
End Property
Public Overrides Function ToString() As String
Return Me.Text
End Function
End Class
Теперь создайте форму, как это:
Public Class ComboActionForm
Private Sub ComboActionForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.ComboBox1.Items.Add(New ComboAction("Show Foo", AddressOf Foo))
Me.ComboBox1.Items.Add(New ComboAction("Show Bar", AddressOf Bar))
End Sub
Private Sub Foo()
System.Windows.Forms.MessageBox.Show("Foo")
End Sub
Private Sub Bar()
System.Windows.Forms.MessageBox.Show("Bar")
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
CType(Me.ComboBox1.SelectedItem, ComboAction).Action.Invoke()
End Sub
End Class
Вы можете добавить столько, сколько ComboAction
классов к ComboBox
, как вы хотите. Каждый из них может иметь любые Action
, которые вы определяете - частные методы или иным образом. Небо это предел. :-)
-1 Это обман ** вашего собственного вопроса ** http://stackoverflow.com/questions/4059461/using-private-функция, еще более короткая и с добавлением 'Три'. – delnan
Пожалуйста, объясните проблемы, которые вы испытываете, с решениями, предложенными в качестве ответов на ваш другой вопрос. Это облегчит нам адаптацию наших предложений к конкретному использованию, а не с нуля. –
Ниже приведен пример, который покажет, что я хочу Public Class Form1 Protected Sub One() MsgBox ("Один называется") End Sub Protected Sub Два() MsgBox ("Two называется") End Sub Protected Sub Три() MsgBox ("Три называется") End Sub Private Sub ComboBox1_SelectedIndexChanged (ByVal отправитель Как System.Object, ByVal е Как System.EventArgs) Ручки ComboBox1.SelectedIndexChanged Вызов ComboBox1.Text End Sub End Class –