[Visual Basic] 3 Fragen bezüglich meiner Form

02/22/2011 18:39 Diablo_#1
Hallo,

ich habe einen Downloader gemacht und möchte ein paar Feinheiten ändern die ich per Googeln nicht herausgefunden habe.

Meine Fragen:

1.) Ich möchte verbieten das die Größe meiner Form verändert werden darf.
Dazu habe ich "Locked = True" gemacht. Ich habe mal in einem Video gesehen wie man das macht aber ich finde das nicht mehr. Mit "Locked=True" geht es nicht.

2.) Ich habe eine Textbox (Textbox1.Text) in der steht "Bitte Downloadlink eingeben...". Ich möchte sobald man in das Textfeld klickt dieser Text verschwindet.

3.) Vieleicht etwas knifflig in diesem Fall. Ich möchte, das wenn man in die Textbox1 nichts eingibt aber auf "Download" klickt eine Fehlermeldung erscheint.

Allerdings geht das nicht mit einer If-Funktion. Hier ist der Code dafür:

Code:
Imports System.Net
Public Class Form1
    Public WithEvents Downloader As WebClient
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Label3.Visible = False
        Downloader = New WebClient
        Downloader.DownloadFileAsync(New Uri(TextBox1.Text), TextBox2.Text)

    End Sub
Ich kann das hier nicht machen:

Code:
Downloader.DownloadFileAsync[color=red] If [/color](New Uri(TextBox1.Text)[color=red] = False Then MsgBox ("Blablabla") End If[/color], TextBox2.Text)
Der Code sieht schonmal komisch aus. Ich habe nämlich keine Lust das sich mein Programm aufhängt wenn man einen solchen Fehler macht.

Vieleicht versteht jemand mein problem noch nicht daher:

In meine Textbox1.Text muss man einen Downloadlink eingeben und dann auf den Button1 klicken um es zu downloaden. Wenn man das Feld aber frei lässt und auf Button1 klickt hängt sich die Form auf. Daher brauche ich eine selbstgemachte Fehlermeldung.

Mit Try und Catch habe ich das auch schon probiert.

Ich hoffe mir kann jemand bei diesen 3 Problemen helfen. Bestimmt lässt sich das lösen aber ich bin noch ein Anfänger.

MfG Diablo_
02/22/2011 18:47 Bench#2
1. Form Größe nicht änderbar:

Code:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Fixed3D
        Me.MaximizeBox = False
    End Sub
2. Wenn man auf Textbox1 drückt (und da steht was) dann text löschen (?!):
Code:
  Private Sub TextBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Click
        If TextBox1.Text = ("Bitte Downloadlink eingeben..") Then
              TextBox1.Clear()
        Else
          
        End If
    End Sub
3. Wenn in der Textbox (1) nichts steht, dann eine Fehlermeldung anzeigen...
Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text = ("") Then
            MsgBox("Fehlermeldung hier schreiben", MsgBoxStyle.Critical, "Error")
        Else

        End If
    End Sub
Ich hoff mal ich habe dir etwas weiter geholfen...

€:
Code:
Downloader.DownloadFileAsync If (New Uri(TextBox1.Text) = False Then MsgBox ("Blablabla") End If, TextBox2.Text)
Mach mal nach dem "= False Then" Enter
das es so aussieht..
Code:
Downloader.DownloadFileAsync If (New Uri(Textbox1.text) = False Then
Msgbox("Blablabla") 
End if
02/22/2011 19:09 Diablo_#3
Guten Abend,

danke dir erstmal für die Hilfe. Das mit der Größe verändern hat geklappt.

Aber bei den anderen beiden Sachen stimmt etwas noch nicht. Wenn ich in die Textbox1 klicke soll ja der Text "Bitte Downloadlink eingeben..." verschwinden.

Mit deinem Code steht da aber nach dem ich das Programm gestartet habe garnichts in der Textbox. Erst wenn ich da rein klicke soll der Text verschwinden. Allerdings erscheint mir dein Code logisch. Keine Ahnung woran das liegt.

Und wenn ich nun auf "Downloaden" klicke werde ich zu diesem gelb-markiertem Code geleitet:

Code:
Downloader.DownloadFileAsync(New Uri(TextBox1.Text), TextBox2.Text)
"Ungültiger URI: Der URI ist leer." Und unten in der Fehlermeldungsbox steht 3x:

"Eine Ausnahme (erste Chance) des Typs "System.UriFormatException" ist in System.dll aufgetreten."


Danke trotzdem für deine Hilfe, eventuel hast du ja noch eine Idee wie man das lösen könnte.

Mit freundlichen Grüßen Diablo_ :)
02/22/2011 19:12 P-a-i-n#4
Versuchs mal damit da kriegst du den exakten Fehler

PHP Code:
        Try
            
Label3.Visible False
            Downloader 
= New WebClient
            Downloader
.DownloadFileAsync(New Uri(TextBox1.Text), TextBox2.Text)
        Catch 
ex As Exception
            MessageBox
.Show("Fehler- " ex.MessageMy.Application.Info.Title)
        
End Try 
Brauchste keine if abfragen der Systemfehler wird abgefangen und in der msgbox gezeigt
02/22/2011 19:20 Yakiyo#5
PHP Code:
Private Sub TextBox1_MouseClick(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgsHandles TextBox1.MouseClick
        TextBox1
.Clear()
    
End Sub 
:)
02/22/2011 20:55 Diablo_#6
Guten Abend,

vielen Dank euch beiden. Jetzt hat jeder von euch 3 eine richtige Funktion gepostet. Hätte nicht gedacht das es so schnell und so einfach geht. :p

Naja, einige Befehle habe ich noch nicht gelernt und musste daher C&P machen.

Trotzdem vielen Dank an euch 3!

MfG Diablo_

* Das Thema kann dann von meiner Seite aus geclosed werden.
02/23/2011 18:23 Bench#7
Quote:
Originally Posted by Diablo_ View Post
Guten Abend,

danke dir erstmal für die Hilfe. Das mit der Größe verändern hat geklappt.

Aber bei den anderen beiden Sachen stimmt etwas noch nicht. Wenn ich in die Textbox1 klicke soll ja der Text "Bitte Downloadlink eingeben..." verschwinden.

Mit deinem Code steht da aber nach dem ich das Programm gestartet habe garnichts in der Textbox. Erst wenn ich da rein klicke soll der Text verschwinden. Allerdings erscheint mir dein Code logisch. Keine Ahnung woran das liegt.

Und wenn ich nun auf "Downloaden" klicke werde ich zu diesem gelb-markiertem Code geleitet:

Code:
Downloader.DownloadFileAsync(New Uri(TextBox1.Text), TextBox2.Text)
"Ungültiger URI: Der URI ist leer." Und unten in der Fehlermeldungsbox steht 3x:

"Eine Ausnahme (erste Chance) des Typs "System.UriFormatException" ist in System.dll aufgetreten."


Danke trotzdem für deine Hilfe, eventuel hast du ja noch eine Idee wie man das lösen könnte.

Mit freundlichen Grüßen Diablo_ :)
Witizg.. bei mir funktionieren alle. Naja egal. Wenn es bei dir jetzt funktioniert.

€: Ja es geht auch ohne "if" ist aber etwas "einfacher"..