2013-04-23 64 views
0

如何將值傳遞給模塊/函數。每當我在這裏搜索或谷歌我得到C#代碼而不是VB.netVB.Net傳遞/調用變量

我想能夠點擊一個按鈕,並將值傳遞給模塊並採取行動。每個按鈕都有一個值1,2,3,4等......並且它們返回以使面板可見=真/假。

即我想說下面,但是當我點擊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 

猜碼

'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 2013-04-23 14:35:06

+0

@ rie819不是一個好主意。 OP,你到底想做什麼?一點都不清楚。你說你想要**這個**作爲一個值。這是什麼** ..? – phadaphunk 2013-04-23 14:52:02

回答

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 

您可以添加所有的按鈕點擊事件處理程序通過將它們添加到Handles ...列表中,如上所述。因此,您不必爲頁面上的每個按鈕創建事件處理程序。只有一個來處理他們。

創建切換功能可視性:

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的panel.Visible = Not.panel.Visible seciton。我(以及你的代碼:) – indofraiser 2013-04-24 09:00:48

+0

該錯誤意味着panelName價值可能不是你的網頁上找到。你必須修改'Dim panelName as String =「panel」&thisButton.CommandArgument'行,以便它能夠反映出面板的名稱。 – ajakblackgoat 2013-04-24 13:27:41

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(PANEL1)」'想出了一個錯誤,如果我把代碼function.vb ie'Imports Microsoft.VisualBasic程序 公共類功能 公用Sub ChangePanelVis(面板面板) 如果panel.Visible然後 panel.Visible =真 否則 panel.Visible =真 結束如果 結束小組 末級 「 但工程在同一頁上。如何將它傳遞到頁面之外,並在* vb頁面中通過? – indofraiser 2013-04-23 15:00:49

+0

也可以通過我傳遞按鈕值以得到按鈕上的文字改變。我曾嘗試作爲一個字符串,但部分之下的錯誤s輕鬆textBtn。文字公用Sub ChangePanelVis(面板面板,textBtn作爲字符串) 如果panel.Visible = TRUE,則 panel.Visible =假 textBtn.text = 「+顯示答案」 否則 panel.Visible =真 textBtn.text = 「 - 隱藏答案」 結束如果 結束小組 – indofraiser 2013-04-23 15:16:32

+0

如果子是在同一個頁面,那麼這將正常工作。如果它在另一頁上,請參閱ajakblackgoat的答案。他包含使用Page的功能。至於文本框文本,只需包含Button的另一個參數,並將其中的文本設置爲你想要的。 – APrough 2013-04-23 17:17:35