0

需要知道 Visual Basic 2010 中单击的 PictureBox 数组元素的索引和标记。 标记索引作为公共整数变量变暗。Gbox是 PictureBox 数组的名称。Tag = sender.tag有效。 Index = NameofArray.Indexof(sender as PictureBox)不起作用,Index = clicked.Indexof(sender as 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

我需要在计算中使用预先分配的标签和索引。感谢您的帮助。

4

2 回答 2

0

这将返回它的索引,试试这个

Index = Array.IndexOf(Gbox, sender)

[注意:first occurance上面的代码将返回objectin that array(From its lower bound- 0)。-1顺便说一句,如果searched object那个特定的不存在,它将返回array]

于 2013-04-02T05:32:17.717 回答
0

最好的答案来自RajaPrabhu,我要感谢他。他的解决方案很简单,解决了几个问题。

    Index = Array.IndexOf(Gbox, sender)

我确实为这个特定程序找到了另一种解决方案,但是感谢RajaPrabhu ,我将能够在其他几个实例中实施他的解决方案。

这是我找到的解决方案:部分问题是用户可能会改变主意并做出不同的选择,从而覆盖选择的标签属性。通过使用选择的标签属性以及更大数组中放置的标签属性来解决。较大的数组标记属性被分配了一个等于创建循环增量的标记,这也是索引。

这得到了所选项目的标签:

    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

感谢您抽出宝贵时间进行审查。这是一个很棒的网站,充满了非常有用的信息和乐于助人的同事。

于 2013-04-02T16:14:33.017 回答