Splashscreen problem mit formen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von riji01.

    Splashscreen problem mit formen

    Hallo

    Erstens es tut mir leid mir ist nicht eingefallen wie ich das thema sonst formulieren hätte können!

    ich habe folgendes problem!
    Ich habe 3 formen
    1. form ist eine serialkeyabfrage
    2. form ist das programm und ein
    splashscreen


    Also es funktioniert alles wenn die form 1 als startbildschirm aktiv ist!
    Es wird unter den settings überprüfft ob ein eintrag vorhanden ist (nokey oder key) der eintrag wird durch die richtige seriennummerneingabe geändert und beim start von form 1 wird dieser eintrag überprüfft wenn der eintrag auf "key" steht dann wird form 2 angezeigt! ALLES FUNKTIONIERT WIE GEWÜNSCHT

    Wenn ich die 1. form als startbildschirm einsetze und den splashscreen als begrüßungsbildschirm passiert folgendes!
    Wenn der einstellungseintrag "nokey" ist:
    Splashscreen wartet dann Form 1 kommt seriennummer muss eingetragen werden und wenn diese stimmt kommt form 2 ALLES FUNKTIONIERT NOCH WIE GEWÜNSCHT
    Aber wenn der eintrag auf "key" steht
    Form 2 kommt gleich beim start und der splashscreen bleibt und geht nicht fort!


    1.Frage
    Wie kann ich das ändern!

    2. Frage
    Ich möchte wenn der splashscreen lädt auf die internetverbindung überprüffen und wenn eine internetverbindung vorhanden ist auf updates überprüffen wie kann ich hier etwas einbinden dass die nächste form erst angezeigt wird, wenn dieser vorgang abgeschlossen ist???
    Willkommen im Forum :thumbup:

    Du weißt aber, das ich (oder jemand anders) den Eintrag ohne großen Aufwand auf key setzten kann?! Das ist super unsicher... Genauso mit dem Updater. Nimm UpdateSystem.Net, das ist sicher und 1a zu verwalten. Zu deinen Fragen: Wie soll ich oder jemand aus dem Forum die helfen, ohne den betreffenden Code gesehen zu haben? 2. Frage ist denke schon beantwortet :)
    Mfg
    Vincent

    normalerweise hat ein splash keinerlei Auswirkungen aufs Programmverhalten.
    Lass den Splash mal weg, und guck, ob deine Anwendung sich ühaupt richtig verhält.

    Oder du machst iwie was komisches mittm Splash.
    Also richtig wäre ein stinknormales Form mit Bildle von hübsche Frau, und inne Projekteinstellung das als Begrüßungsbildschirm gesetzt und sonst garnix.

    Dann geht der weg, sobald das als Startformular festgelegte Form anzeigt.

    VincentTB schrieb:

    "Willkommen im Forum :thumbup:

    Du weißt aber, das ich (oder jemand anders) den Eintrag ohne großen Aufwand auf key setzten kann?! Das ist super unsicher... Genauso mit dem Updater. Nimm UpdateSystem.Net, das ist sicher und 1a zu verwalten. Zu deinen Fragen: Wie soll ich oder jemand aus dem Forum die helfen, ohne den betreffenden Code gesehen zu haben? 2. Frage ist denke schon beantwortet :)"

    wie soll ich das am besten machen? mir fällt nichts einfacheres ein wie ich auf den key überprüffen soll!


    CODE:
    Form 1 (serialkey):

    VB.NET-Quellcode

    1. Public Class SerialKeyAbfrage
    2. Dim web As New System.Net.WebClient
    3. Dim serials As String = ""
    4. Dim retry As Integer = 1
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. Application.Exit() 'Programm wird beendet wegen Button1 (= Beenden)
    7. End Sub
    8. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    9. checkserial() 'serialkey überprüffen
    10. End Sub
    11. Private Sub checkserial()
    12. Try
    13. serials = Textbox1.text 'dies ist nur um ohne probleme das programm zu programmieren und testen dies wird dann durch einen web.downloadstring ersetzt
    14. If serials.Contains(TextBox1.Text) Then ' Wenn gedownloadet in der datei enthalten sind
    15. Form2.Show()
    16. My.Settings.serialkey = "key" 'einstellung ändern 1 ist Serial key eingegeben 0 ist serialkey nicht eingegeben
    17. Else
    18. If retry <= 2 Then 'Zählerschleife wird erstellt (3 versuche)
    19. retry += 1 'zählerschleife wird erhöht
    20. Label2.Text = "Falsche Seriennummer! Noch: " & 4 - retry & " Versuche!" 'Zählerschleife wird mitgezählt
    21. Else
    22. MsgBox("Programm wird beendet!", MsgBoxStyle.Information)
    23. Application.Exit() 'Programm wird beendet weil zu oft die serialkey falsch eingegeben wurde
    24. End If
    25. End If
    26. Catch ex As Exception
    27. MsgBox("Es ist ein Fehler aufgetreten!", MsgBoxStyle.Critical) 'im falle eines fehlers
    28. End Try
    29. End Sub
    30. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    31. Try
    32. checkseriallength() 'serialkeylänge Kontrollieren
    33. If My.Settings.serialkey = "nokey" Then 'Einstellungen überprüffen 1 ist Serialkey eingegeben 0 ist serial key nicht eingegeben
    34. Else
    35. If My.Settings.serialkey = "key" Then Form2.Show() 'Einstellungen überprüffen 1 ist Serial key eingegeben 0 ist serialkey nicht eingegeben
    36. End If
    37. Catch ex As Exception
    38. MsgBox("Es ist ein Fehler aufgetreten!", MsgBoxStyle.Critical) 'im falle eines fehlers
    39. End Try
    40. End Sub
    41. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    42. checkseriallength() 'serialkey Kontrollieren
    43. End Sub
    44. Private Sub checkseriallength() 'serialkey kontrollieren wenn ok dann button ist anklickbar sonst nicht
    45. If TextBox1.TextLength = 29 Then
    46. Button2.Enabled = True 'Button2 wird anklickbar gemacht weil die serialkey länge erreicht ist
    47. Button2.Text = "Überprüffen" 'Button2 Text zu Überprüffen geändert
    48. Else
    49. Button2.Enabled = False ' Button2 wird nichtanklickbar gemacht weil die serialkey länge nicht erreicht ist
    50. Button2.Text = "Eingabe zu kurz" 'Button2 Text zu Eingabe zu kurz geändert
    51. End If
    52. End Sub
    53. End Class


    Form2:

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Try
    4. SerialKeyAbfrage.Close() 'Serialkeyabfragefenster wird geschlossen
    5. Catch ex As Exception
    6. MsgBox("Es ist ein Fehler aufgetreten!", MsgBoxStyle.Critical) 'im falle eines fehlers
    7. End Try
    8. End Sub
    9. Private Sub SeriennummerZurücksetzenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SeriennummerZurücksetzenToolStripMenuItem.Click
    10. resetserial() 'serialkey zurücksetzen
    11. End Sub
    12. Private Sub resetserial() 'serialkey zurücksetzen
    13. Try
    14. If My.Settings.serialkey = "nokey" Then 'Prüfen ob serial key vorhanden
    15. MsgBox("Es ist keine Seriennummer vorhanden!", MsgBoxStyle.Critical) 'Kein serialkey vorhanden
    16. Else
    17. If MsgBox("Sind Sie sicher dass Sie die Seriennummer zurücksetzen möchten?" & vbCrLf & "Sie müssen die Seriennummer dann erneut eingeben!", MsgBoxStyle.YesNo) = Windows.Forms.DialogResult.Yes Then 'Warnung
    18. MsgBox("Seriennummer gelöscht!" & vbCrLf & "Programm wird neu gestartet!", MsgBoxStyle.Information) 'Serialkey wurde gelöscht
    19. My.Settings.serialkey = "nokey" 'Settings zurücksetzen
    20. SerialKeyAbfrage.Show()
    21. Me.Close()
    22. Else
    23. End If
    24. End If
    25. Catch ex As Exception
    26. MsgBox("Es ist ein Fehler aufgetreten!", MsgBoxStyle.Critical) 'im falle eines fehlers
    27. End Try
    28. End Sub
    29. Private Sub ProgramminformationToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProgramminformationToolStripMenuItem.Click
    30. Try
    31. info.Show() 'Infoform wird angezeigt
    32. Catch ex As Exception
    33. MsgBox("Es ist ein Fehler aufgetreten!", MsgBoxStyle.Critical) 'im falle eines fehlers
    34. End Try
    35. End Sub
    36. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „riji01“ ()

    VincentTB schrieb:

    Es ist in VB leider unmöglich, sowas sicher zu machen. Ist dein Programm so wichtig/groß, dass du das brauchst?
    Nein! aber Serial key ist nur damit ich eine kleine sicherheit habe z.b. vielleicht so einen zähler in der webseite dann einbauen der zählt wieviele gratis serialkeys geholt werden!

    Und wie bekomme ich das mit dem splashscreen hin? ich habe jetzt eine form eingebaut und diese als begrüßungsbildschirm gewählt, ich möchte aber dass wenn der begrüßungsbildschirm lädt auf internetverbindung überprüfft und ähnliches und wenn dies fertig ist und das programm geladen ist die serialkeyabfrage angezeigt wird außer der eintrag steht auf key steht dann soll die form 2 angezeigt werden!

    Z.B.
    Programm komplett geladen
    begrüßungsbildschirm (internetverbindung u.ä. wurde fertig ausgeführt)
    einstellungseintrag auf key
    Resultat: Form2 anzeigen

    Programm nicht komplett geladen
    begrüßungsbildschirm (internetverbindung u.ä. wurde fertig ausgeführt)
    einstellungseintrag auf key
    Resultat: Form2 anzeigen erst wenn programm geladen ist

    Programm komplett geladen
    begrüßungsbildschirm (internetverbindung u.ä. wurde nicht fertig ausgeführt)
    einstellungseintrag auf nokey
    Resultat: form 1 anzeigen sobald internetverbindung u.ä.fertig ausgeführt würde!

    Ich glaube es ist klar was ich meine!

    Ich hätte gedacht bei dem begrüßungsbildschirm den code für internetverbindung testen u.ä. und sobald dies fertig ist

    VB.NET-Quellcode

    1. Try
    2. checkseriallength() 'serialkeylänge Kontrollieren
    3. If My.Settings.serialkey = "nokey" Then 'Einstellungen überprüffen 1
    4. ist Serialkey eingegeben 0 ist serial key nicht eingegeben
    5. Else
    6. If My.Settings.serialkey = "key" Then Form2.Show() 'Einstellungen
    7. überprüffen 1 ist Serial key eingegeben 0 ist serialkey nicht eingegeben
    8. End If
    9. Catch ex As Exception
    10. MsgBox("Es ist ein Fehler aufgetreten!", MsgBoxStyle.Critical) 'im falle eines fehlers
    11. End Try


    aber wie kann ich das beenden des begrüßungsbildschirms verhindern, bis dies ausgeführt wurde und bis das programm komplett geladen ist!
    Hier ein Beispiel, wie du rausbekommst ob du Internet hast oder nicht:
    codeproject.com/Tips/147662/Testing-Internet-Connectivity

    Bitte formatiere deinen Code mal lesbar, ist ein Bug, dass der Tag aus dem Editor nicht funzt. Guckst du hier: Bitte VB Tags benutzen - was ist damit gemeint?
    Ich würde keine Setting vom Typ String sondern vom Typ Boolean anlegen, da es ja nur entweder Aktiviert (True) oder nicht aktiviert (False) sein kann.
    Außerdem ließ dir das durch:
    [VB 2010] Instanziierung von Forms und Aufruf von Dialogen

    Ich weiß, das ist jetzt ziemlich viel was nicht direkt mir deiner Frage zu tun hat, aber letztendlich ist gutes Coden sehr wichtig.
    Mfg
    Vincent

    Ich denke, Du solltest Deine Programmstruktur nochmal überdenken. Prüfe erst auf eine Internetverbindung, wenn diese benötigt wird. Beispielsweise kannst Du das prüfen, indem Du einen Ping an google oder sonst was absetzt. Ich würde generell komplett auf den Splashscreen verzichten und wenn, dann würde ich selber einen entwerfen. Wie Dir schon gesagt wurde, kannst Du Dir den Stress mit den Serial-Keys einfach sparen. Jeder 5-jährige kann das umgehen und Du investierst zuviel Energie in dieses Vorhaben. Setz Dich stattdessen lieber mit wichtigen Themen auseinander, wie z. B.

    vb-paradise.de/allgemeines/tip…-und-aufruf-von-dialogen/
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Ich habe schon viel zeit investiert und befor ich dies lösche investier ich lieber noch mehr zeit (mir ist es das wert) kann mir bitte jemand die lösung veraten nicht den code (ich habe schon oft gelesen selber denken also) sondern nur wie!