PictureBox数组索引或标记引用

时间:2013-04-02 05:23:55

标签: vb.net visual-studio-2010

需要知道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

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

2 个答案:

答案 0 :(得分:0)

这将返回其索引,试试这个

Index = Array.IndexOf(Gbox, sender)

[注意:以上代码将返回first occuranceobject的{​​{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

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