通过子参数引用表单上的控件

时间:2013-05-23 18:56:53

标签: vb.net

对于我的Visual Basic类中的最终项目,我正在制作一个Windows Forms版本的Battleship(我称之为“NavalQuest”:p)。每个玩家的棋盘都有一个表格,我有一个.vb文件用于公共共享信息。在这个文件中,我有一个名为“Place”的公共共享子,在放置船只时要调用。以下是我必须领导的内容:

Public Shared Sub Place(ByRef form As Form, ByRef board(,) As PictureBox, ByRef picbox As PictureBox)

其中“form”是调用Sub的形式(p1或p2),“board(,)”,作为实际板的2D图像框阵列,以及“picbox”,图片用户想要将船放在其中的框。

用户选择“水平”或“垂直”的单选按钮,该单选按钮与船的方向相对应。 Sub检查单击哪一个。这就是我有一个“form”参数的原因,用于引用单选按钮所在的表单,因为我不能直接从全局.vb文件中引用它。但是,当计算机显示:

form.radhoriz.checked

在我尝试运行之前它出错,因为“radhoriz”显然不是Windows.System.Forms.Form的属性。它不明白我要在窗体上控制,而不是窗体本身的属性。即使我要在每种形式的“radhoriz”上创建一个属性,错误仍然存​​在,因为“radhoriz”将是“p1board”和“p2board”(表单名称)的属性,而不是Windows.System。 Forms.Form。

我尝试将参数的数据类型更改为Object。没有出现任何蓝色错误行,所以我运行了应用程序。出现运行时错误的原因与之前相同。

这有什么办法吗?我想我可以为我引用表单的所有控件添加参数,但这是唯一的方法吗?谢谢你的帮助!

-Ryan

1 个答案:

答案 0 :(得分:0)

忽略这是一个可怕的整体设计...... *不出意外,因为你是学生! =)

在参数签名中......

变化:

ByRef form As Form

要:

ByRef form As frmName

其中“frmName”是您的玩家牌照表格的名称。

此外,将所有ByRef更改为ByVal。