Vb.net 从按钮向函数添加函数调用

Vb.net 从按钮向函数添加函数调用,vb.net,forms,function,Vb.net,Forms,Function,我不知道如何命名这篇文章,为此我道歉。我只是想试试看: 我有form1,它运行时有五个主要的复选框和一个按钮。对于按下按钮时选中的每个复选框,都会运行一个函数,调用复制文件的函数列表,诸如此类。问题是我无法自动复制每种类型的文件 因此,我创建了form2,上面有一系列的复选框,每个复选框都与一个函数关联。对于表单2上的每个复选框,我希望在表单1上执行的函数调用列表中添加一个函数 我只希望form2显示一次,选中的每个框都需要向选中的相应form1

我不知道如何命名这篇文章,为此我道歉。我只是想试试看:

我有
form1
,它运行时有五个主要的
复选框和一个
按钮。对于按下
按钮时选中的每个
复选框
,都会运行一个函数,调用复制文件的函数列表,诸如此类。问题是我无法自动复制每种类型的文件

因此,我创建了
form2
,上面有一系列的
复选框,每个复选框都与一个函数关联。对于
表单2
上的每个复选框,我希望在
表单1
上执行的函数调用列表中添加一个函数

我只希望
form2
显示一次,选中的每个框都需要向选中的相应
form1
函数列表添加一个函数调用

这很难解释,因此我将尝试使用一些通用的伪代码:

Form1
code:

If Checkbox1.Checked Then
    Function1()
    Function2()
    Function3()
    'Run functionA or functionB from form2 depending on which boxes are checked
End If
If Checkbox2.Checked Then
    Function1()
    Function2()
    Function3()
    'Run FunctionA or FunctionB from form2 depending on which boxes are checked
End If

Form2 Code:
    Public Sub FunctionA()
        If FunctionA.Checked Then
             'do stuff
        End If
    End Sub
    Public Sub FunctionB()
        If FunctionB.Checked Then
             'do stuff
        End If
    End Sub

在从
FormA
实际运行任何代码之前,我会在按钮后单击
Form1
调用
Form2.Showdialog()
。我只想调用
Form2
一次,让程序“记住”在
FormA
中为每个函数选择的内容。所有这些都有意义吗???

难道你不能简单地根据检查结果从Form1调用From2中的函数吗

Form1代码:
私有子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
如果复选框1.选中,则
职能1()
职能2()
职能3()
RunSelectedChecks()'执行选定的表单2函数
如果结束
如果复选框2.选中,则
职能1()
职能2()
职能3()
RunSelectedChecks()
如果结束
端接头
私有子运行SelectedChecks()
如果选中了Form2.Checkbox1.Checked,则为Form2.function()
如果选中Form2.Checkbox2.Checked,则为Form2.FunctionB()
端接头

您应该调查学员。委托是指方法的对象。委托可以像任何其他对象一样传递。这意味着您可以为每个方法创建一个委托,然后根据
复选框将它们添加到列表中。完成后,只需循环该列表并调用每个委托来执行引用的方法。在您的情况下,如果每个方法都是一个没有参数的
子方法
,那么您应该使用
操作
委托。类似的方法可能会起作用,但是您能否根据选中的框动态创建一个函数来运行其他函数?我不确定“动态创建一个函数来运行其他函数”是什么意思。box1链接到随机函数这一事实意味着您需要指定它链接到的函数。可以动态找到函数的唯一方法是,以标识函数与哪个复选框相关的方式命名函数,然后使用反射为每个选定框查找函数。或者,你也可以研究jmcillhinney的建议,但这仍然不是“动态的”。也不知道为什么你需要动态