Visual C# - Exeption behandeln und Hilfetext

Antarex

Grünschnabel
Hi,
Ich hab mich mal wieder an das Programmieren gewagt ;)
Dabei habe ich mir jetzt C# ausgesucht.
Da sind die Möglichen zwar weit über dem was ich eigentlich kann, aber wächst mit seinen Aufgaben ;)

Ich möchte jetzt eine Exeption abfabgen ohne Try benutzen zu können (denke ich).
Ich habe in einem Formular eine 'driveListBox', dort werden alle Laufwerdke aufgelistet die vorhanden sind. Also auch leere DVD-Laufwerke die bei Auswahl eine Systemfehlermeldung verursachen.
Man bei anklicken auf 'Weiter' dann zwar weiterarbeiten, aber es ist eben nicht das was ich mir vorstelle.
1. Frage: wie müsste eine entsprechende Funktion in etwa aussehen?
Es reicht, glaube ich, wenn ich ein allgemeines Beispiel zu sehen bekomme.
Nach möglichkeit auf das wesentlich beschränkt. Im Web hab ich irgendwie nichts gefunden.
---------------
Unter VB konnte man im Eigenschaftenfenster von Objekten, wie Buttons oder Ähnlichem, Hilfetexte eingeben, die dann, wenn die Maus über dem Objekt verweilte, sich in einer Box gezeigt haben. So wie auf dem Desktop, wenn man über die Icons geht.
2. Frage: welche Eigenschaft oder Variable muss ich dafür verändern?

Ich hoffe ich habe mich verständlich genug ausgedrückt.
 
Um im Vorfeld eine Exception abzufangen, also ohne try, müssen die Bedingungen die diese Exception auslösen vorab geprüft werden und nur dann darf die auslösende Methode aufgerufen werden.
In deinem Fall müsstest du wohl prüfen, ob eine CD/DVD im Laufwerk eingelegt wurde.
Leider hab ich keine Lösung dazu parat, aber wozu gibt es Suchmaschinen. :D

Zu zweiten Sache mit den ToolTips, da musst du einen ToolTip-Provider ins Formular oder Control ziehen, dann kannst du über die Eigenschaften der Elemente auch Tips eintragen.
Den Provider findest du in der Toolbox.
 
Ja, die doofen Suchmaschinen.
Ich finde ja im allgemeinen das was ich suche, aber in diesem Falle...


Danke für den Tip mit den ToolTips.
Endlich weiß ich wieder wie die heißen ;)
Und mit etwas mehr Suchinstinkt hätte man (also ich jetzt) die wohl auch finden können.
Aber wer kommt schon darauf dass das jetzt eine eigene Geschichte ist.
 
Jo, Danke
Das war es - plus dem Denkfehler meinerseits.

Ich ging davon aus, dass die Exeption schon von der DirListBox gemeldet wird und ich keine Möglichkeit habe zu reagieren.
Tatsächlich passiert das aber erst dann wenn ich auf das entsprechende LW wechseln lasse.

Von daher brauch ich dann eben nur noch, dank deiner Hilfe, die Verfügbarkeit abfragen, und kann entsprechend reagieren lassen.

Gesucht hatte ich dabei eigentlich eine Entsprechung von 'On Error goto ... ' aus VB.
Ist aber aus den genannten Gründen eh hinfällig.
 
Die gibt es meines Wissens nicht in C# nur in VB.Net aus Altlasten heraus.
Davon sollte man aber die Finger lassen, das ist ganz schlechter Programmierstil.

Wo die Exception genau ausgelöst wurde, erkennt man sehr gut am StackTrace der Exception. Sehr hilfreich bei der Fehlersuche.
 
so weit habe ich das ja jetzt nach meinen Wünschen.
Was mich ein wenig stört ist, wie ich das umgesetzt habe:
Code:
            string LW = string.Format("{0}{1}", driveListBox1.Drive.Substring(0, 2).ToUpper(), Path.DirectorySeparatorChar);
            System.IO.DriveInfo[] allDrives = System.IO.DriveInfo.GetDrives();
            foreach (System.IO.DriveInfo d in allDrives)
            {
                if (d.Name == LW)
                {
                    if (d.IsReady == true)
                    {
                        dirListBox1.Path = driveListBox1.Drive;
                        fileListBox1.Path = dirListBox1.Path;
                    }
                    else
                    {
                        MessageBox.Show("Laufwerk ist nicht ansprechbar. \nBitte ein anderes Laufwerk benutzen.", "Achtung", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        driveListBox1.Drive = dirListBox1.Path.Substring(0, 2);
                    }
                }
            }
und zwar 'stört' mich dabei diese 'foreach-Schleife'
kann man das entsprechende Laufwerk auch direkt ansprechen, ohne dabei von Pontius zu Pilatus zu laufen?
 
Ok - Google ist mein Freund.
Code:
            System.IO.DriveInfo d = new System.IO.DriveInfo(driveListBox1.Drive.Substring(0, 2));
            if (d.IsReady == true)
            {
                dirListBox1.Path = driveListBox1.Drive;
                fileListBox1.Path = dirListBox1.Path;
            }
            else
            {
                MessageBox.Show("Laufwerk ist nicht ansprechbar. \nBitte ein anderes Laufwerk benutzen.", "Achtung", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                driveListBox1.Drive = dirListBox1.Path.Substring(0, 2);
            }
 

Neue Beiträge

Zurück