Autor Beitrag
blutengel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP, WIN 7
VS#2008 Prof
BeitragVerfasst: Fr 26.02.10 18:48 
Hi!

Habe folgenden Code:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            try 
            {
                COM1.Open();
                COM1.Close();
            }
            catch 
            { 
                MessageBox.Show("COM1 ist nicht verfügbar");
            }
        }
        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            try 
            {
                COM2.Open();
                COM2.Close();
            }
            catch 
            {
                MessageBox.Show("COM2 nicht verfügbar");
            }
        }


Damit will ich per Radio Button den Com Port einstellen. Um zu sehen ob der Port verfügbar ist offne und schliße ich ihn einmal mit try und catch. Sollte der Port nicht verfügbar sein soll die Messagebox erscheinen.Das Problem ist wenn ich auf Com2 schalte kommt die Meldung nicht verfügbar, das ist ja richtig so denn ich besitze kein Com2. Aber wenn ich wieder auf Com1 schalte kommt die meldung nochmal das Com2 nicht verfügbar ist. Was mache ich falsch?Oder habe ich noch etwas vergessen?

MFG

blutengel

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 26.02.10 19:05 
1. Warum ist der Code nicht als solcher erkennbar? Das ist jetzt deine 5. Diskussion; du solltest mehrfach schon erkannt haben, wie der anzuzeigen ist.

2. Ich hatte dich schon auf notwendige Formulierungen hingewiesen (Rechtschreibung, Satzzeichen).

Wenn du Hilfe haben willst, solltest du den Helfern die Arbeit erleichtern. Unter diesen Umständen will ich nicht konkret über dein Problem nachdenken. Jürgen
blutengel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP, WIN 7
VS#2008 Prof
BeitragVerfasst: Fr 26.02.10 19:55 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
        try
        {
            COM1.Open();
            COM1.Close();
        }
        catch
        {
            MessageBox.Show("COM1 ist nicht verfügbar");
        }
            
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
            
         try
         {
             COM2.Open();
             COM2.Close();
         }
         catch
         {
             MessageBox.Show("COM2 nicht verfügbar");
         }

            
}





Habe erst nicht gefunden.Aber was hast du noch an meiner Formulierung auszusetzen.?


Zuletzt bearbeitet von blutengel am Fr 26.02.10 20:42, insgesamt 1-mal bearbeitet
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 26.02.10 20:29 
Zitat:
Aber was hast du noch an meiner Formulierung auszusetzen.?

1. Einrückungen im Code.

2. Falsches Deutsch ist dies:
user profile iconblutengel hat folgendes geschrieben Zum zitierten Posting springen:
Damit will ich per Radio Button den Com Port einstellen. Um zu sehen ob der Port verfügbar ist offne und schliße ich ihn einmal mit try und catch. Sollte der Port nicht verfügbar sein soll die Messagebox erscheinen.Das Problem ist wenn ich auf Com2 schalte kommt die Meldung nicht verfügbar, das ist ja richtig so denn ich besitze kein Com2. Aber wenn ich wieder auf Com1 schalte kommt die meldung nochmal das Com2 nicht verfügbar ist.

Richtiges Deutsch ist dies:
Zitat:
Damit will ich per RadioButton den ComPort einstellen. Um zu sehen, ob der Port verfügbar ist, öffne und schließe ich ihn einmal mit try und catch. Sollte der Port nicht verfügbar sein, soll die Messagebox erscheinen. Das Problem ist: wenn ich auf Com2 schalte, kommt die Meldung "nicht verfügbar"; das ist ja richtig so, denn ich besitze kein Com2. Aber wenn ich wieder auf Com1 schalte, kommt die Meldung nochmal, dass Com2 nicht verfügbar ist.

Ich erwarte ja gar kein fehlerfreies Deutsch (eigentlich schon, aber ich habe inzwischen erkannt, dass das in Foren eine Wahnvorstellung ist). Aber mit mehr Satzzeichen als bei dir (vor allem Kommata zwischen Haupt- und Nebensätzen sowie Einschüben) wird die Satzstruktur und damit der Sinn erheblich klarer.

So, wenn du jetzt noch die Einrückungen machst, dann denke ich ernsthaft nach. (Bitte benutze dazu den Schere-Button und mache keinen neuen Beitrag.) Und noch mehr würde ich mich freuen, wenn du künftig gleich an die Leser denkst. Jürgen
------------------
Danke, geht doch.

Zu deinem Problem: Ich nehme an, dass die RadioButtons in einer GroupBox oder so zusammengefasst werden (das ist jedenfalls der Sinn der Sache), sodass immer nur ein RadioButton auf Checked=true steht und alle anderen auf false.

CheckedChanged wird ausgelöst, wenn sich der Zustand ändert. Wenn also der Button2 auf Checked steht und Button1 gedrückt wird, wird zuerst Button2 auf Checked=false gesetzt und dadurch dessen CheckedChanged-Ereignis ausgelöst. Dein Fehler liegt darin, dass du innerhalb der Ereignismethode gar nicht den Checked-Zustand abfragst.

Das Dumme ist, dass es kein passendes GroupBox-Ereignis gibt. Du musst also entweder in deinem bisherigen Code den Checked-Zustand einbauen oder ein gemeinsames Ereignis für beide RadioButtons benutzen (ich glaube auch, dass Click besser passt als CheckedChanged) und per if-Verzweigung den aktuellen RadioButton auswerten.

Gruß Jürgen
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 01.03.10 07:32 
Hallo,

das liegt daran, welches Event du registriert hast. Das CheckedChanged-Event wird ausgelöst, sobald sich der Checked-Wert des RadioButtons ändert. Dies ist beim Anwählen als auch beim Abwählen der Fall. Sprich du musst noch überprüfen, ob der RadioButton nun gecheckt ist oder nicht.

Generell fände ich es aber schöner, wenn du innerhalb der Initialisierung überprüfst, welche COM-Ports es gibt und dann dementsprechend nur diese anzeigst. Sollte diese Überprüfung zu lange gehen, kannst du ja einen Initialisierungsprozessbar anzeigen.

Gruß Daniel