从组合框调用私有函数

时间:2010-11-10 15:36:30

标签: vb.net

我需要根据用户使用组合框选择的内容构建一个可以在私有函数中运行代码的应用程序。

例如,组合框有三个值,一,二,三

如果用户选择一个,则在Private Function One()下编写的代码运行,反之亦然

由于

Furqan

4 个答案:

答案 0 :(得分:1)

更简单的方法是在选择组合框时指定一个函数。你的函数里面有一个select语句,如:(Pesduo)

Function comboSelected

    Case "One"
        call Onefunction()
    Case "Two"
        call Twofunction()

End function

答案 1 :(得分:0)

你为什么宣称这些是私人的?

表单控件无法访问私有函数。您应该将它们声明为受保护。

答案 2 :(得分:0)

查看我的另一个post。这很棒!

答案 3 :(得分:0)

这是一种让它工作的方法 - 假设是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 - 私有方法或其他方法。天空才是极限。 : - )