需要知道Visual Basic 2010中单击的PictureBox数组元素的索引和标记。 标记和索引将变为公共整数变量。 Gbox 是PictureBox数组的名称。 标记= sender.tag 有效。 Index = NameofArray.Indexof(发件人为PictureBox)不起作用, Index = clicked.Indexof(发件人为PictureBox)
Private Sub Gbox_Click(sender As Object, e As EventArgs)
Dim clicked As PictureBox = CType(sender, PictureBox)
SelectedColor.Image = clicked.Image
Tag = sender.tag
Index = Gbox.IndexOf(sender as picturebox) 'Does not work
Index = clicked.Indexof(sender as PictureBox) ' Does not work
End Sub
我需要在计算中使用预先指定的标签和索引。感谢您的帮助。
答案 0 :(得分:0)
这将返回其索引,试试这个
Index = Array.IndexOf(Gbox, sender)
[注意:以上代码将返回first occurance
中object
的{{1}}(来自其array
- 0)。顺便说一下,如果lower bound
中没有-1
,则会返回searched object
答案 1 :(得分:0)
最好的答案来自 RajaPrabhu ,我要感谢他。他的解决方案很简单,解决了几个问题。
Index = Array.IndexOf(Gbox, sender)
我确实找到了这个特定程序的另一个解决方案,但是由于 RajaPrabhu ,我将能够在其他几个实例中实现他的解决方案。
这是我找到的解决方案: 部分问题是用户可以改变主意并进行不同的选择,从而覆盖选择的标签属性。通过使用选择的tag属性解决,然后使用较大数组中的放置的tag属性。为较大的数组标记属性分配了一个等于创建循环增量的标记,该标记也是索引。
这得到了所选项目的标签:
Private Sub SC_Click(sender As Object, e As EventArgs)
Dim clicked As PictureBox = CType(sender, PictureBox)
SelectedColor.Image = clicked.Image
Tag = sender.tag
End Sub
然后这得到了放置数组的标记,即索引:
Private Sub Gbox_Click(sender As Object, e As EventArgs)
Dim clicked As PictureBox = CType(sender, PictureBox)
clicked.Image = SelectedColor.Image
Index = sender.tag
End Sub
在此处测试并使用输出:
Private Sub Guess_Click(sender As System.Object, e As System.EventArgs) Handles Guess.Click
Dim PositionInRow As Integer
TextBox1.Text = "Tag: " + Tag.ToString + ", Index: " + Index.ToString
'MessageBox.Show(index.ToString)
Row = Row + 1
PositionInRow = Index Mod 5 + 1 'there are 13 rows of 5 positions
'more code.......
End Sub
感谢您抽出宝贵时间进行审核。这是一个很棒的网站,充满了非常有用的信息和乐于助人的人员。