2014-09-19 97 views
0

我有一个LinkLabel,它设置为接收在ComboBox中进行选择而产生的一些URL。我想要完成的是让用户从我的组合中选择一个状态,然后点击链接标签中显示的单个链接。如何将数组项目作为链接标签中的单独链接

让我的链接在数组中,我得到的是数组显示链接为“一个整体”字符串,我希望他们分开链接。下面是我有:

Public arrAlabama(2) As String 
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    ' Create array for Alabama and add items. 

    arrAlabama(0) = "http://www.rolltide.com/" 
    arrAlabama(1) = "http://www.crimsontidehoops.com/" 
    arrAlabama(2) = "http://centralalabamapride.org/" 

End Sub 

Private Sub cboSelectState_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSelectState.SelectedIndexChanged 
    ' Populate the link label. 
    If cboSelectState.SelectedIndex = 0 Then 
     lnklblLinkbox.Text = arrAlabama(0) _ 
          & vbNewLine & arrAlabama(1) _ 
          & vbNewLine & arrAlabama(2) 
    End If 

End Sub 

我有大约3其他arrStateName类型数组,所以我SelectedIndex将跨越从[0][3],每个数组将包含3个URL链接。

那么我在哪里错了?如果任何人都可以在正确的方向上给我提供帮助,我将不胜感激。有些人建议使用Dictionary数据类型,但我是新手,当我尝试测试时,我感到沮丧,因为它似乎没有产生我想要的结果。使用TKeyTValue会将我抛弃,并且我永远无法将所有链接显示在框中。我为我的密钥使用了Integer,为我的值(链接)使用了String,但无法使其工作。一些急需的指导将不胜感激。是我想要做什么,或者我应该使用其他控件类型?

+0

哪里的3个环节去?你想为每一个动态创建LinkLabels吗? – OneFineDay 2014-09-19 18:02:14

+0

你有2个答案,这是怎么回事?有什么问题吗? – OneFineDay 2014-09-20 18:31:02

+0

有点忙,对不起。我给你一个upvote,因为你的回答很有用。但是它比我需要的代码更多,因为我的状态列表现在已经扩展了。 瓦尔特有一个很好的形式,我正在寻找使用,我可以用我已经有的东西来阐述。 – DesignerMind 2014-09-21 03:32:16

回答

0

添加的RichTextBox和设置检测Urls = trueBorderStyle = NoneBackcolor =表单的颜色,如果它是。大小应该足够大以容纳网址。然后

Private Sub cboSelectState_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSelectState.SelectedIndexChanged 
    'Populate RichTextBox1. 
    If cboSelectState.SelectedIndex = 0 Then 
     RichTextBox1.Text = arrAlabama(0) _ 
         & vbNewLine & arrAlabama(1) _ 
         & vbNewLine & arrAlabama(2) 
    End If 

End Sub 

Private Sub RichTextBox1_LinkClicked(sender As System.Object, e As System.Windows.Forms.LinkClickedEventArgs) Handles RichTextBox1.LinkClicked 
    Dim txt As String = e.LinkText 'txt is the link you clicked 
End Sub 

瓦尔特

+0

谢谢,瓦尔特......这就是我一直在寻找的东西,我可以从这种形式构建。谢谢。 – DesignerMind 2014-09-21 03:34:00

1

做一个类对象:

Public Class StateLinks 
Public Property State As String 
Public Property Links As New List(Of String) 
Public Overrides Function ToString() As String 
    'tells the combobox what to display 
    Return State 
Public Sub New(state As String) 
    Me.State = state 
End Sub 
End Class 

加载一些statesLinks为List(OF T)

Private stateLinksList As New List(Of StateLinks) 
Private Sub LoadMe() Handles Me.Load 
    Dim coState As New StateLinks("Colorado") 
    coState.Links.Add("some link") 
    stateLinksList.Add(coState) 
    ' continue adding then bind them 
    cboSelectState.DataSource = stateLinksList 
End Sub 

获取从选择链接:

Private cb_selectionChanged() Handles cboSelectState.SelectedIndexChanged 
    Dim state = TryCast(cb.SelectedItem, StateLinks) 
    If Not state Is Nothing 
    For Each link As String In state.Links 
     'each link now available 
    Next 
    End If 
相关问题