对于我的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
答案 0 :(得分:0)
忽略这是一个可怕的整体设计...... *不出意外,因为你是学生! =)
在参数签名中......
变化:
ByRef form As Form
要:
ByRef form As frmName
其中“frmName”是您的玩家牌照表格的名称。
此外,将所有ByRef更改为ByVal。