VB.Net Изменение значения в разных текстовых полях с 1 функцией на основе имени - PullRequest
0 голосов
/ 01 января 2012

Хорошо. Я сделал это в Php с функцией ранее. Я просто не знаю, как это сделать в VB.

У меня есть создатель листа персонажа для игры, которую я делаю. То, что я хочу сделать, это написать одну функцию, где вы нажимаете на кнопку, и она будет передавать имя текстового поля (чтобы он знал, какое текстовое поле для редактирования), а также значение внутри текстового поля ( чтобы убедиться, что новый потолок характеристик персонажа учтен).

На мой взгляд, код псевдо за кнопкой будет выглядеть примерно так:

Private Sub Button_Click
     AddtoValue(Textbox1,stats)
End Sub

Public Sub AddtoValue (NoIdea,NoIdea2)
     dim ObjectName as Object, ObjectText as string, Textasnum as integer

     Objectname = frmmain.noidea
     ObjectText = objectname.text

     textasnum = convert.toint32(objecttext)
     objecttext = textasnum

     [If Statements to check value of objectname for rules validation, and then noidea2 to figure out which point pool to take from and change if passes rules validation]
End Sub

По сути, мне нужно знать, что ставить для noidea и noidea2, например, byval или byref или как?

Ответы [ 3 ]

2 голосов
/ 01 января 2012

Создайте процедуру примерно так:

Private Sub ProcedureName(ByVal NameOFTextBox as String, _
                          ByVal ValueToAssign as String)
     Dim xTextBox as TextBox = DirectCast(Me.Controls(NameOfTextBox), TextBox)
     xTextBox.Text = ValueToAssign
End Sub

Использование:

ProcedureName("txtBoxName", "NewValue")

UPDATE:

Private Sub ProcedureName(ByVal CtrlName As String, ByVal NewVal As String)
    Dim xCtrl() As Control = Controls.Find(CtrlName, True)
    For Each iControl As Control In xCtrl
        If iControl.Name = CtrlName Then
            Dim xTxt As TextBox = DirectCast(iControl, TextBox)
            xTxt.Text = NewVal
        End If
    Next
End Sub
1 голос
/ 01 января 2012

В VB.Net очень возможно отправлять объекты на вызовы функций по ссылке.

Следовательно, ваша подпись будет выглядеть примерно так:

Public Sub AddtoValue (Byref textboxObj as TextBox, Byval stat as String)

    textboxObj.text = stat

End Sub
0 голосов
/ 02 января 2012

На основе уточненных комментариев вы должны иметь возможность проходить и получать доступ к текстовым полям напрямую.

Вот как должен выглядеть ваш метод AddToValue:

Public Sub AddtoValue (theTextBox As TextBox, theStatsBox As TextBox)
     dim Textasnum as integer

     If IsNumeric(theTextBox.Text) Then
         textasnum = convert.toint32(theTextBox.Text)
     Else
         textasnum = 0
     End If

     [If Statements to check value of objectname for rules validation, 
      and then noidea2 to figure out which point pool to take from and 
      change if passes rules validation]
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...