2016-01-24 1 views
0

Как я могу изменить определенный элемент управления, с переменной .textVB.net текст изменения кнопки управления с переменными

If Me.Controls.OfType(Of Button) = ("Button" & Bindex) Then 
    button.Text = PostMyresult 
End If 

Таким образом, нет радости, прилагается нет кодового блок. Надеюсь, что его не слишком загрязнен:

`Private Sub Button34_Click (отправитель As Object, е Как EventArgs) Ручки Button34.Click

Dim DaButton As String 
    For Bindex As Integer = 1 To 2 

     DaButton = ("Button" & Bindex & ".Text = SAMPLE" & Bindex) 
     MessageBox.Show(DaButton) 
     ' Me.Button1.Text = "SAMPLE1" 
     CollectSample(DaButton & ".Text" & ".txt") 'works grabs sample from spectrum anlzr 
     CheckSample(DaButton & ".Text" & ".txt") 'works error check 

     ' MessageBox.Show(SampleFlag) 
     If SampleFlag <> 0 Then 
      SendMyAvg = Math.Round(SendMyAvg, 2) 
      If SendMyAvg < 1 Then 
       MessageBox.Show("Average Sample Is < 1 ") 
       ' Me.Button1.Text = "SAMPLE1" 
       For Each myCtrl As Control In Me.Controls 
        If (TypeOf myCtrl Is Button) Then 
         If myCtrl.Name = "Button" & Bindex Then 
          myCtrl.Text = DaButton 
         End If 
        End If 
       Next 

       Exit Sub 
      End If 
      ' MessageBox.Show("Button" & Bindex & "/" & SendMyAvg) 

      For Each myCtrl As Control In Me.Controls 
       If (TypeOf myCtrl Is Label) & myCtrl.Name = "Label" & Bindex Then 
        myCtrl.Text = SendMyAvg 
        MessageBox.Show("Button" & Bindex & "/" & SendMyAvg) 
       End If 
      Next 
      ' Button1.Text = SendMyAvg 
      ' MsgBox("Avg Is " & SendMyAvg) 
     End If 
    Next 
End Sub` 
+1

'Me.Controls.OfType (кнопки)' будет подмножеством элементов управления, которые являются кнопками. Вам нужно повторить и найти тот, который вы хотите – Plutonix

ответ

1

Попробуйте это:

For Each myBtn as Button In Me.Controls.OfType(Of Button) 
     If myBtn.Name = "Button" & Bindex Then 
      myBtn.Text = PostMyResult 
     End If 
    Next 
+1

, который изменит * каждую * кнопку не только на то, что он/она ищет – Plutonix

+0

Уже отредактировал мой ответ. Спасибо @Plutonix. –

+0

, если вы используете 'Для каждой кнопки btn As в Me.Controls.OfType (Of Button)' вроде как у OP, вы можете избавиться от первого блока If. Затем проверьте его в разделе Option Strict – Plutonix

2

Ну, если у вас есть Linq, вы можете сделать это:

Dim btn = Me.Controls.OfType(Of Button).Where(Function(x) x.Name = "Button1" & Bindex) 
    If btn.Count > 0 Then 
     btn(0).Text = "New Text" 
    End If 
+0

Тому, кто дал отрицательный результат. Зачем? – Nathu

+2

Не мой минус, но это может быть потому, что вы выбираете кнопку, свойство ** Text ** которой является «Button1» + Bindex', когда вопрос, вероятно, спрашивает о кнопке, чье свойство ** Name ** является «Button1» «& Bindex» (и обратите внимание, что лучше использовать оператор конкатенации строк - & в VB). – Blackwood

+0

Ох. Ну, я не думаю, что это действительно стоит того отрицательного, но спасибо за это. Редактирование. – Nathu

1

решение:

DirectCast (Me.Controls.Find ("Метка" & Bindex, Правда) (0), Этикетка) .Text = SendMyAvg

 Смежные вопросы

  • Нет связанных вопросов^_^