【问题标题】:Random Picture generator giving error "reference to a non-shared member requires an object reference"随机图片生成器给出错误“对非共享成员的引用需要对象引用”
【发布时间】:2016-11-29 20:20:22
【问题描述】:

我需要开发一个随机图片生成器作为我项目的一部分,因为我是新手,所以我捏了一些互联网代码,但是它抛出了错误消息“对非共享成员的引用需要对象引用”。这是我的代码:

      Dim randnum As random
      Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
    randnum = Random.Next(30)
    pbxPicture.Image = My.Resources.ResourceManager.GetObject("Image_" & randnum.ToString())
End Sub

我的资源中的图像被命名为“image_0”“image_1”等等,所以我希望你能看到我在这里想要实现的目标,如果有人能帮助我,我将非常感激 :) 谢谢!

【问题讨论】:

  • 您从未创建过New 对象的New 实例并且...
  • 您的randnum 变量完全被混淆了。您需要在实例上调用Next
  • 如果定期调用类似的东西,您的应用也会泄漏。 GetObject() 每次都返回一个新对象。将图像存储在一个数组中并从该数组中分配它们
  • 具有讽刺意味的是,this post 做得对....and this one。由于您在这些帖子上获得了帮助,我鼓励您使用 Tour 了解 SO 的工作原理。如果您的问题已得到解答,请点击最有帮助的复选标记,将其移出未回答列表
  • 哦,错过了 Plutonix 已经提到接受答案的事情。

标签: vb.net


【解决方案1】:

你必须 instantiate randnum 变量,然后调用 Next() 。您还需要一个Integer 变量来将Next() 的返回值放入。

为了清楚起见,我将第一个变量重命名为 rand,并将整数变量命名为 randnum

Dim rand As New Random 'Renamed variable and added the "New" keyword.
Dim randnum As Integer = 0 'An Integer variable to hold the result of "rand.Next()".

Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
    randnum = rand.Next(30)
    pbxPicture.Image = My.Resources.ResourceManager.GetObject("Image_" & randnum.ToString())
End Sub

【讨论】:

  • 您可能还想遵循 Plutonix 的建议来创建数组。
  • 哇,非常感谢大家,对于这个琐碎的问题,我可能会听从 Plutonix 的建议,因为这似乎可以防止我在以后遇到问题,再次感谢大家!
  • @Brandontom :没问题。我们对任何问题持开放态度,无论大小,只要它在某种程度上遵循the guidelines。 ;)
猜你喜欢
  • 2015-10-18
  • 1970-01-01
  • 2015-08-01
  • 2020-05-25
  • 1970-01-01
  • 2016-01-06
  • 2012-11-07
  • 1970-01-01
  • 2016-02-27
相关资源
最近更新 更多