2013-04-23 4 views
0

Как передать значение модулю/функции. Всякий раз, когда я ищу здесь или Google, я получаю код для C#, а не VB.net.VB.Net прохождение/вызов переменной

Я хочу, чтобы иметь возможность нажимать на кнопку и передавать значение модулю и выполнять его. Каждая кнопка имеет значение 1,2,3,4 и т. Д. ... и они возвращаются, чтобы сделать панель видимой = истина/ложь.

i.e. Я хочу сказать ниже, но когда я нажимаю btnShow1, я хочу передать это как значение функции и скрыть/показать панель, о которой я говорю.

Текущий код

Protected Sub btnShowQ1_Click(sender As Object, e As System.EventArgs) Handles btnShowQ1.Click 

     If panel1.Visible = True Then 
      panel1.Visible = False 
     Else 
      panel1.Visible = True 
     End If 

    End Sub 

Guess код

'Protected Sub btnShowQ1_Click(sender As Object, e As System.EventArgs) Handles btnShowQ1.Click 
      vpanel = btnShowQ1.value 
     Call fncPanel(vpanel as string) as string 

    End Sub 

Тогда где-то - я думаю, в App_Code Я создаю function.vb

Imports Microsoft.VisualBasic 

Public Class ciFunctions 
    Public Function fncPanel(vPanel as string)as string 
      If (vPanel).visible = False then 
       (vPanel).visible = true 
      Else 
       (vPanel).visible = false 
      End IF 
    End Function 
End Class 
+0

Ленивый ответ, вы всегда можете взять свой пример кода и запустить его через бесплатный конвертер кода, чтобы увидеть vb.net: http://www.developerfusion.com/tools/convert/csharp-to-vb/ – rie819

+0

@ rie819 не такая хорошая идея. OP, что именно вы хотите сделать? Это не совсем понятно. Вы говорите, что хотите передать ** это ** как ценность. что это** ..? – phadaphunk

ответ

0

Установите кнопки CommandArgument свойства на номер панели, к которой она показывает или скрывает:

<asp:Button ID="Button1" runat="server" Text="Show/Hide" CommandArgument="1" /> 
<asp:Button ID="Button2" runat="server" Text="Show/Hide" CommandArgument="2" /> 

На событии нажатия кнопки:

Private Sub Button_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, ... 
    ' get the button which triggers this event 
    Dim thisButton As Button = DirectCast(sender, Button) 

    ' construct the panel name to toggle visibility from the button's CommandArgument property 
    Dim panelName as String = "panel" & thisButton.CommandArgument 

    ' call the function, passing the panel name and the reference to current page 
    TogglePanel(Me, panelName) 
End Sub 

Вы можете добавить все кнопки мыши обработчика событий к этому суб, добавив их в список «Ручки ...», как указано выше. Поэтому вам не нужно создавать обработчик событий для каждой кнопки на странице. Только один, чтобы справиться с ними.

Создать функцию для переключения видимости:

Sub TogglePanel(pg As Page, panelName As String) 
    ' get the panel control on the page 
    Dim panel As Panel = DirectCast(pg.FindControl(panelName), Panel) 

    ' toggle its visibility 
    panel.Visible = Not panel.Visible 
End Sub 

Параметр pg требуется, если вы поставите эту функцию в классе, кроме страницы, он работает или в модуле. Если функция находится в одном классе страниц, то pg не требуется.

+0

Я получаю сообщение об ошибке «Ошибка NullReferenceException не была обработана кодом пользователя. ON the panel.Visible = Not.panel.Visible seciton. Мой (ну ваш код :) – indofraiser

+0

Эта ошибка означает, что значение panelName не найдено на вашей странице. измените строку 'Dim panelName как String =" panel "& thisButton.CommandArgument' соответственно, чтобы она отражала имя вашей панели. – ajakblackgoat

0

Вы должны быть в состоянии просто добавить параметр типа Panel, а в событии btnShow передать элемент.

Public Sub ChangePanelVis(panel as Panel) 
    If panel.Visible then 
     panel.Visible = True 
    Else 
     panel.Visible = True 
    End If 
End Sub 

Protected Sub btnShowQ1_Click(sender As Object, e As System.EventArgs) Handles btnShowQ1.Click 
    ChangePanelVis(panel1) 
End Sub 
+0

Благодаря @APrough строки '«ChangePanelVis (ПАНЕЛЬ1)»' приходит с ошибкой, если я поставил код в function.vb ie'Imports Microsoft.VisualBasic Функция общественного класс Public Sub ChangePanelVis (панель В панели) Если panel.Visible Тогда panel.Visible = True Else panel.Visible = True End If End Sub End Class ' но работает на той же странице. Как я могу передать его за пределами страницы и на странице * vb путь? – indofraiser

+0

Также можно передать значение кнопки, чтобы изменить текст на кнопке. Я пробовал как строку, но что ошибки под частью tha t sasy textBtn.текст Public Sub ChangePanelVis (панель В панели, textBtn As String) Если panel.Visible = True Then panel.Visible = False textBtn.text = "+ Показать ответы" Else panel.Visible = True textBtn.text = «-Hide Answers» End If End Sub – indofraiser

+0

Если юг находится на одной странице, это будет работать. Если он находится на другой странице, то см. Ответ ajakblackgoat. Он включает в себя функциональность при использовании страницы. Что касается текста текстового поля, просто включите другой параметр Button и установите текст этого для того, что вы хотите. – APrough