十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Public Sub 载入窗体() '在类中公有方法要明确Public
平遥ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
Dim frm As New Form1 '在Windows应用程序项目中系统隐含生成了一个Form1类的同名对象,其实你直接引用的是隐含的Form1对象,而不是看得着的那个Form1窗口类。
'而在这种工程类型中列表中没有列出来,应该是没有的,所以的用代码生成Form1的实例。
frm.Show()
End Sub
通过判断ComboBox的SelectedIndex属性,来调用相应的子程序即可。
也可以判断SelectedText或SelectedValue值,就看你习惯用哪个喽。
然后用按钮点击事件来判断,判断可以使用Select Case语句
比如在按钮点击事件中
Select Case ComboBox1.SelectedIndex
Case 1
'调用子过程一
Case 2
'调用子过程二
End Select
很简单的,回去实验下吧。
这里觉得没有区别,是因为在SubAddRow 里,我们并没有试图改变形参 t 本身,我们所做的改变都是 t.Rows,我们为 t 添加了行。
对于形参和实参而言,在ByVal 模式下 temTable 和 t 指向了同一块内存,但是这两个变量本身并不在同一个地址上。在改变 t.Rows时,由于二者都指向同一块内存,所以更改了t.Rows里的行数据;
在ByRef模式下,temTable 和 t 就是同一块内存,二者在一个地址上,肯定也就指向同一块内存,在改变 t.Rows时,就是对 temTable 的改变。
在此举个例子:假设我们需要将 temTable 清空,那么我们还是以 t 作为形参,我们可以这样写:
' ByVal 方式传参
Private Sub ClearRow(ByVal t As DataTable)
t = Nothing
End Sub
' ByRef 方式传参
Private Sub ClearRow(ByRef t As DataTable)
t = Nothing
End Sub
' 并且这样调用
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
ClearRow(temTable)
DataGridView1.DataSource = temTable
End Sub
这样,就是有区别的了。ByVal方式时,虽然 t 被置为 Nothing ,但是由于 t 和 temTable 并不是一个变量,并不在同一个地址上,所以 temTable 没有变。
而 ByRef 时,t 和 temTable 就是同一个变量,在同一个地址上,t = Nothing的同时,temTable 也就是Nothing了。
如果这个解释还不清楚,可以追问。
vb.net调用子程序是一样的,只是对于一些系统事件或过程,都是有参数的,你必须加上参数
子程序实际上就是
Sub ()
……
End Sub
括起来的部分,相当于Pascal语言中的过程或者是C/++语言中的void型函数。
不知“如何定义子程序”是指哪个层面的。
如果是指子程序定义的语法结构,则要讲明白需要较多的文字,所以建议找一本教科书看看。
如果是指在代码窗口建立子程序,则有两种方法:
(1)直接输入,操作步骤是:
打开代码编辑窗口
→
置插入点于任何已经存在的过程之外
→
输入子程序的代码
(2)使用“添加过程”对话框,操作步骤是:
打开代码编辑窗口
→选择菜单“工具/添加过程”→
填写“添加过程”对话框中的“过程名”以及选择“类型”、“范围”等选项
→
单击“确定”
→
输入子程序定义体