2015-10-20 143 views
2

使用VB.Net 4.6(VS企業2015年),窗形成如何使用字符串值引用VB中的List(Of String)?

我有以下情形:

  1. 我有四個名爲List(Of String) S 'BlackRed', '墨綠色', 「WhiteRed '&'白色綠色'。
  2. 我有兩個GroupBox,每個有兩個 RadioButtons。 GroupBox1是「襯衫顏色」與RadioButtons「黑」 & 「白色」和GroupBox2是「褲子顏色」與RadioButtons「紅色」 & 「綠色」。

    根據選中的單選按鈕,我最終得到一個名爲'ColorCombo'的包含所選顏色的字符串變量 。

    「BlackRed」,「BlackGreen」,「WhiteRed」或 「WhiteGreen」的四種可能性與我的四個List(Of String)的名稱相同。

  3. 我有一個圖表使用變量ListToChart(即 a List(Of String))來繪製數據。

現在我的問題是:

如何使用值在 字符串變量分配匹配List(Of String)爲 「ListToChart」?我無法使用 ListToChart = ColorCombo,因爲那顯然會導致「字符串類型的值無法轉換爲List(Of String)」錯誤。

例如:'襯衫顏色'是黑色,'褲子顏色'是紅色。此 在名爲 'ColorCombo'的字符串變量中創建「BlackRed」值。我現在想要將的List(Of String)與'ColorCombo'中的值分配給變量 'ListToChart'。

以下是我的代碼修改後的版本:

Public Class Form2 
Public Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    'The Lists are populated on another form and carried over to this one. 
    'The actual code consists of about 40 Lists and about 15 RadioButtons. This code is an extremely stripped down version. 
    'Assume for this example, the 4 List(Of String)s are named BlackRed, BlackGreen, WhiteRed & WhiteGreen. 
    Call READRADIOBUTTONS() 
End Sub 
Public Sub READRADIOBUTTONS() 
    If RadioButtonShirtBlack.Checked = True Then SHIRTSTRING = "Black" 
    If RadioButtonShirtWhite.Checked = True Then SHIRTSTRING = "White" 

    If RadioButtonPantsRed.Checked = True Then PANTSSTRING = "Red" 
    If RadioButtonPantsGreen.Checked = True Then PANTSSTRING = "Green" 

    COLORCOMBO = SHIRTSTRING & PANTSSTRING 
    Call PLOTCHARTDATA() 
End Sub 
Public Sub PLOTCHARTDATA() 
    'The following line is where I would need to use the String named COLORCOMBO to reference 1 of the 4 List(Of String)s. 
    LISTTOCHART = COLORCOMBO 

    ChartColors.Series("Series1").Points.Clear() 
    For a = 0 To LISTTOCHART.Count - 1 
     ChartColors.Series("Series1").Points.AddXY(LISTTOCHART.Item(a), COUNTTOCHART(a)) 
    Next 
End Sub 
Public Sub RadioButtonShirtBlack_Click(sender As Object, e As EventArgs) Handles RadioButtonShirtBlack.Click 
    Call READRADIOBUTTONS() 
End Sub 
Public Sub RadioButtonShirtWhite_Click(sender As Object, e As EventArgs) Handles RadioButtonShirtWhite.Click 
    Call READRADIOBUTTONS() 
End Sub 
Public Sub RadioButtonPantsRed_Click(sender As Object, e As EventArgs) Handles RadioButtonPantsRed.Click 
    Call READRADIOBUTTONS() 
End Sub 
Public Sub RadioButtonPantsGreen(sender As Object, e As EventArgs) Handles RadioButtonPantsGreen.Click 
    Call READRADIOBUTTONS() 
End Sub 

回答

0

你不想這樣做。你應該使用枚舉來定義你的襯衫和褲子,而不是比較字符串:

Public Enum ShirtColour 
    Black 
    Red 
End Enum 

Public Enum PantsColour 
    White 
    Green 
End Enum 

那麼你應該設定一個變量根據您的選擇單選按鈕,並使用類來保存選擇:

Public Class UserSelection 
    Public Property Shirt As ShirtColour 
    Public Property Pants As PantsColour 
End Class 


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     Dim selection As New UserSelection 

     If radShirtBlack.Checked Then 
      selection.Shirt = ShirtColour.Black 
     ElseIf radShirtRed.Checked Then 
      selection.Shirt = ShirtColour.Red 
     End If 

     If radPantsGreen.Checked Then 
      selection.Pants = PantsColour.Green 
     ElseIf radPantsWhite.Checked Then 
      selection.Pants = PantsColour.White 
     End If 
End Sub 
+0

感謝您的答覆。我必須進一步研究並適應我的需求,但是您肯定給了我一個開始的地方! – Ixquaty

+0

查看此代碼後,儘管它可能已解決了處理RadioButton選擇的更好方法,但我無法看到這是如何回答原始問題的。這個新代碼如何讓我根據RadioButton的整體組合,將四個List(Of String)中的一個分配給'ListToChart'變量? – Ixquaty

+0

它不(但它太長的評論)。你的設計很差,所以我指出你有一個更好的方向。話說回來;你只需要使用'selection'來繪製你的圖表而不是'List(of String)'。沒有看到這個代碼,我不能給你任何幫助如何做到這一點。 –

相關問題