0

对于我的 Visual Basic 课程的最后一个项目,我正在制作一个 Windows 窗体版本的 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(,)”是实际棋盘的二维图片框数组,“picbox”是其上的图片框用户想要放置有问题的船。

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

form.radhoriz.checked

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

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

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

-瑞安

4

1 回答 1

0

忽略它是一个可怕的整体设计这一事实...... *不过,这并不意外,因为你是一名学生!=)

在您的参数签名中...

改变:

ByRef form As Form

至:

ByRef form As frmName

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

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

于 2013-05-23T19:24:57.350 回答