Визуальные вкладки

Привет, ребята, я пытаюсь динамически создавать вкладки каждый раз, когда я нажимаю кнопку, поэтому проблема заключается в том, что когда я ограничиваю создание уже существующей вкладки, я попробовал метод Controls.Find и получил «Значение типа« Control () »не может быть преобразован в «логическое значение» "... Вот мой код в Visual Studio 2015. Буду признателен за любую помощь или другой метод.

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim myTabPage As New TabPage()
    TabControl1.Visible = True

    If myTabPage.Controls.Find("Pedido", True) Then

        TabControl1.SelectedTab = myTabPage

    Else

        Form1.TopLevel = False
        myTabPage.Text = "Pedido" 
        TabControl1.TabPages.Add(myTabPage)
        myTabPage.Controls.Add(Form1)
        TabControl1.SelectedTab = myTabPage
        Form1.Show()
    End If

End Sub

person Jose Maria    schedule 21.06.2017    source источник


Ответы (1)


Controls.Find возвращает массив элементов управления, а не логическое значение. Итак, сделайте следующее:

If myTabPage.Controls.Find("Pedido", True).Length > 0 Then

ИЗМЕНИТЬ:

Предполагая, что вы пытаетесь либо выбрать, либо создать вкладку под названием «Pedido» (и для ясности удалить часть кода), попробуйте следующее:

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      TabControl1.Visible = True

      Dim c = TabControl1.Controls.Find("Pedido", True)

      If c.Length > 0 Then
         TabControl1.SelectedTab = CType(c(0), TabPage)
      Else
         Dim myTabPage As New TabPage()
         myTabPage.Text = "Pedido"
         myTabPage.Name = "Pedido"
         TabControl1.TabPages.Add(myTabPage)
         TabControl1.SelectedTab = myTabPage
      End If
   End Sub
person Brian M Stafford    schedule 21.06.2017
comment
Для удобочитаемости я мог бы предложить: поставить Dim tabExists As Boolean = myTabPage.Controls.Find("Pedido", True) IsNot Nothing в строке выше, а затем If tabExists Then. - person Dai; 21.06.2017
comment
Я пробовал это, но это просто дает истинные результаты для любого значения, отключающего ключ от метода поиска ... Вы знаете другой метод для того, что я пытаюсь сделать? - person Jose Maria; 21.06.2017
comment
Он возвращает не один элемент управления, а массив элементов управления, который никогда не будет нулевым. Вместо этого проверьте If myTabPage.Controls.Find("Pedido", True).Length > 0 Then. - person Visual Vincent; 21.06.2017
comment
@VisualVincent, ты прав. Я обновлю свой ответ. - person Brian M Stafford; 21.06.2017
comment
Кроме того, вам необходимо присвоить имя элементу управления при его создании. Это имя используется в качестве ключа для поиска. - person Brian M Stafford; 21.06.2017
comment
Эм отлично! Итак, мне нужно присвоить имя элементу управления сейчас... не могли бы вы обновить мой код. Извините, я все еще учусь с vb. - person Jose Maria; 21.06.2017