VB.net 2005: Link erscheinen lassen und verlinken

atlantyz

Erfahrenes Mitglied
Hallo!

Ich habe ein Programm geschrieben, dass mir Preise für Pakete ausrechnet und mir dann sagt, ob DHL oder Hermes günstiger ist und was das Paket kostet.

Jetzt hätte ich gerne noch einen Link zur Hermes, bzw. DHL Seite und zwar abhängig davon, ob das Programm ein DHL-Paket empfiehlt oder das Hermes-Paket.

Sollte dann so aussehen:

Günstigstes Paket: Hermes S, Preis 3,85 € Link: http://www.hermes-versand.de.

Wenn man dann auf den Link klickt sollte man eben zur entsprechenden Seite gehen.

Nun meine Frage:
Wie bekomme ich es hin, dass der Link erst erscheint, nachdem das Programm das Paket berechnet hat und vorallem: wie verlinke ich die DHL, bzw. Hermes Seite?

Ich kenne mich mit dem erstellen von Links überhaupt nicht aus und die Anleitung auf der msdn-Seite habe ich nicht verstanden.

Kann mir jemand ein Beispiel geben, wie und wo ich den Code für den Link einfügen muss?
Kann man den Aufruf des Linkes als if-Abfrage einfügen?

Also z.B. if ergebnis = hermes then link http://www.hermes-versand.de
else http://www.dhl.de oder sowas?

Mit freundlichen Grüßen
Joey
 
Hallo Joey willkommen erstmal :),
also das ist ganz einfach. Du brauchst dafür erstmal ein LinkLabel, in den Eigenschaften machst du Visible auf "false". In der Funktion wo du berechnest, welcher Dienstleister günstiger ist, setzt du z.B. ans Ende der Funktion:

Code:
if dienstleister == "hermes"
{
      linkLabel1.Visible = true;
      linkLabel1.Text = "www.hermes-versand.de"
}
else
{
      linkLabel1.Visible = true;
      linkLabel1.Text = "www.dhl.de"
}

Du machst dann einen ClickEvent auf das LinkLabel, musst natürlich sehen ob das Ergebnis was du hast public ist damit du draufzugreifen kannst.
Code:
private void linkLabel1_LinkClicked_1(object sender, 
     System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
    if dienstleister == "hermes"
    {
        System.Diagnostics.Process.Start("http://www.hermes-versand.de");
    }
    else    {
        System.Diagnostics.Process.Start("http://www.dhl.de");
    }
}

Gruß
Konstantin
 
Ich hab das jetzt mal eingefügt in meinen Rechner und bekomme eine Fehlermeldung.

Code:
Private Sub LinkLabel_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs, ByVal dienstleister As String) Handles LinkLabel.LinkClicked
        If dienstleister = "Hermes" Then
            System.Diagnostics.Process.Start("http://privatpaketservice.hlg.de/wps/portal/PAKETVERSAND")
        Else
            System.Diagnostics.Process.Start("https://www.dhl.de/olapl/editaddress.entry")
        End If
    End Sub

Die Fehlermeldung lautet:
Fehler 2 Die Methode "Private Sub LinkLabel_LinkClicked(sender As Object, e As System.Windows.Forms.LinkLabelLinkClickedEventArgs, dienstleister As String)" kann das Ereignis "Public Event LinkClicked(sender As Object, e As System.Windows.Forms.LinkLabelLinkClickedEventArgs)" nicht behandeln, da sie nicht die gleiche Signatur haben.

Ich denke das Linklabel hat ein Problem mit meinem String "dienstleister". Aber dort hab ich hinterlegt, ob er eben den Link Hermes oder DHL nehmen soll (Die Methoden geben den entsprechenden Wert als String zurück). Oder hab ich irgendwo einen Denkfehler?

Ist es überhaupt richtig, dass ich den Code dort eingegeben habe, wo VB automatisch hinspringt wenn ich einen Doppelklick auf den Linklabel mache? Oder geb ich den Code für das Klick-Event in meiner Main-Prozedur ein?

Hoffe ihr versteht mich :) bisschen kopliziert zu erklären das Ganze :)
 
Ah, Problem grad selbst gelöst: Habe einfach die Variable "dienstleister" komplett ausgelagert, also noch oberhalb der ersten Prozedur. Jetzt können alle Methoden auf diese Variable zugreifen und sie verändern. Nun klappt es :)

Vielen Dank für die Hilfe
 
Hi

die Signator der Methode, die das LinkClick-Event behandelt darfst du nicht verändern, da sie mit der Signatur des EventHandlers übereinstimmen muss.

Du hast aber den entsprechende Link sowieso schon im Label stehen. den kannst du auch im Event abfragen damit den Prozess starten. Den zusätzlichen Parameter benötigst du an der Stelle nicht mehr, da du bei deiner Berechnung ja schon entschieden hast, welcher Link angezeigt wird.
 
Zurück