0

LinkLabel選択した結果の URL を受け取るように設定された がありますComboBox。私が達成しようとしているのは、ユーザーがコンボから状態を選択し、リンク ラベルに表示される個々のリンクをクリックできるようにすることです。

リンクを配列に入れると、配列はリンクを「1つの全体」の文字列として表示し、リンクを分離したいのです。ここに私が持っているものがあります:

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たが、機能しませんでした。いくつかの非常に必要なガイダンスをいただければ幸いです。私がやろうとしていることは可能ですか、それとも他のコントロールタイプを使用する必要がありますか?

4

2 に答える 2

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
于 2014-09-19T18:21:26.737 に答える
0

RichTextBoxを追加し、Detect Urls = trueBorderStyle = NoneBackcolor = フォームの色 (フォーム上にある場合) を設定します。サイズは、URL を保持するのに十分な大きさにする必要があります。それで

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

ヴァルター

于 2014-09-19T21:12:37.720 に答える