从组合框中调用私有函数

从组合框中调用私有函数

问题描述:

我需要构建一个可以在私有函数中运行代码的应用程序,具体取决于用户使用组合框选择的内容。从组合框中调用私有函数

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

如果用户选择一个,下专用功能的一个编写的代码()运行并反之亦然

由于

Furqan

+1

-1这是一个**你自己的问题** http://stackoverflow.com/questions/4059461/using-private-function,只是更短,并与'三'增加。 – delnan 2010-11-10 15:39:40

+0

请解释您遇到的问题,并将解决方案作为您的其他问题的答案提出。这将使我们更容易根据您的具体使用量身定制我们的建议,而不是从头开始。 – 2010-11-10 15:41:31

+0

下面是一个示例,它会显示我想要的公共类Form1中 保护小组的一个() MSGBOX(“一个被称为”) 结束小组 保护小组的两个() MSGBOX(“两个被称为”) 结束小组 保护小组三() MSGBOX( “三称为”) 结束子 私人小组ComboBox1_SelectedIndexChanged(BYVAL发件人为System.Object的,BYVALË作为System.EventArgs)把手ComboBox1.SelectedIndexChanged 呼叫ComboBox1.Text 结束子 结束类别 – 2010-11-11 06:38:25

看到我的另一个post。这很好用!

你为什么要宣布这些为私人?

表单控件无法访问私有函数。你应该声明它们是受保护的。

+0

这是不正确的。放置在表单上的控件当然可以访问在同一表单中声明的​​私有成员。如果您试图访问在继承层次结构中较高的表单类中声明的成员,则只需将它们标记为受保护。 – 2010-11-10 15:43:18

+0

我们在这里谈论Windows窗体或Web窗体吗? – Scottie 2010-11-10 15:47:52

+0

我的不好,我假设WinForms,因为这似乎是他最后一个问题的共识。 – 2010-11-10 15:55:10

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

Function comboSelected 

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

End function 

这里有一种方法使它工作 - 假设Windows窗体。

首先,定义这个类:

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 - 私有方法或其他方法。天空才是极限。 :-)