Entwickler-Ecke
C# - Die Sprache - MessageBox Verzögerung
peterd - Mi 06.02.08 08:02
Titel: MessageBox Verzögerung
Hallo Zusammen.
Habe als Neuling zu C# mal eine Frage, auf die ich bisher noch keine Antwort gefunden habe.
Und zwar würde ich gerne eine MessageBox aufpopen lassen nachdem ein bestimmter Button gedrückt wurde. Im prinzip ja kein Problem. Allerdings sollte diese MessageBox keinerlei "OK", "Abbrechen" oder sonstige Buttons haben mit der man sie wegklicken könnte.
Die MessageBox sollte einen Text wie: "Die Daten werden übertragen... Bitte warten" oder so etwas beinhalten. Vieleicht auch noch eine kleine Statusanzeige in % wie weit die Daten übertragen sind. Und solange die MessageBox offen ist kann der User nichts anderes an der Software machen. Wenn dann alle Daten üebrtragen sind, nach ca. 15 Sekunden, schließt sich die Box von allein und der User kann weiterarbeiten.
Könnt ihr mir helfen.
Danke.
peter
bakachan - Mi 06.02.08 08:07
hmmm kann sein das ich mir sowas zu umständlich mach aber benutz doch ein form dem du von deinem programm aus die statusanzeige auffüllst und am ende schließt o.O
peterd - Mi 06.02.08 08:46
Danke ist ne Möglichkeit die ich mir mal überlegen werde.
Allerdings ist die Statusanzeige erstmal unwichtig.
Mich interessiert erstmal ob so eine Timer gesteuerte Text/MessageBox ohne irgendwelche Buttons möglich ist und wie ich die programmieren kann.
peter
Kha - Mi 06.02.08 09:05
bakachan hat schon recht, dafür musst du auf jeden Fall eine neue Form erstellen. Ist kein Weltuntergang ;) .
peterd - Mi 06.02.08 14:41
OK Danke.
Leider krieg ich das irgendwie nicht hin.
Ich bin schon mal so weit gekommen dass ich eine leere Form öffnen kann mit folgendem Quellcode.
C#-Quelltext
1: 2: 3: 4: 5:
| private void Senden_Click(object sender, System.EventArgs e) { Form Form2 = new Form(); Form2.Show(); } |
Was muss ich aber jetzt noch tun damit eine neue selbst"gezeichnete" Form, die bereits in meiner Projektmappe ist (Visual Studio), geöffnet wird?
Oder kann ich diese neue Form wo mit dem oberen Quelltext aufgeht auch nach meinen Wünschen um"zeichnen"? So etwas finde ich nämlich auch nicht.
Sorry für die vielen Fragen. Aber bin halt ein Newbie
Peter
Moderiert von
Christian S.: C#-Tags hinzugefügt
bakachan - Mi 06.02.08 15:07
Also so wie ich das sehe hast du mit deinem Quelltext eine neue (leere) Form erstellt und angezeigt.
| Zitat: |
| Was muss ich aber jetzt noch tun damit eine neue selbst"gezeichnete" Form, die bereits in meiner Projektmappe ist (Visual Studio), geöffnet wird? |
Kann ich das so verstehen das du im Visual Studio mit dem Designer eine neue Form erstellt und nach deinen Wünschen gestaltet hast?
Wenn ja musst du natürlich eine Instanz dieser Formklasse die du gestaltet hast anlegen und nicht eine normale Form
Beispiel:
Nehmen wir an du hast eine Form mit dem Namen WaitForm erstellt und gestaltet, dann müsstest du davon eine erstellten:
C#-Quelltext
1: 2: 3: 4: 5:
| private void Senden_Click(object sender, System.EventArgs e) { WaitForm Form2 = new WaitForm(); Form2.Show(); } |
Oder habe ich das ganze jetzt falsch verstanden?
JüTho - Mi 06.02.08 15:10
Hallo,
Du musst genau aufpassen, was ein
Typ (Name der Klasse) ist und was ein
Element (Name einer Variablen). Angenommen, Dein zweites Formular in der Projektmappe heißt Form2; dann geht es einfach so:
C#-Quelltext
1: 2: 3: 4: 5:
| private void Senden_Click(object sender, System.EventArgs e) { Form2 form = new Form2(); form.Show(); } |
Nicht die Klasse soll angezeigt werden, sondern eine bestimmte Instanz dieser Klasse!
Wenn Du von MainForm aus die Anzeige steuern willst, dann musst Du genauer überlegen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| private Form2 form2 = null;
private void Senden_Click(object sender, System.EventArgs e) { if (form2 == null) form2 = new Form2(); form2.Show(); }
form2.SetNextStep(83); |
Diese public-Methode von Form2 muss dann irgendetwas anzeigen und mit Refresh() darstellen.
Wenn der Benutzer nichts machen darf, solange form2 geöffnet ist, musst Du
ShowDialog() verwenden statt Show(). Dann ist aber MainForm blockiert, und die Steuerung muss anders ablaufen. Aber das stellen wir erstmal zurück, bis Du sicherer bist beim Zusammenspiel mehrerer Formulare.
Jürgen
@bakachan
Ich habe es auch so verstanden.
peterd - Mi 06.02.08 15:27
Ihr habt das schon richtig verstanden.
Diese Visual Programmierung ist irgendwie nicht so mein Fall ;)
Ich komme aus der Mikrocontroller Programmierung mit C und ASM. Paar Input Pins, paar Output Pins, hier n Timer, dort n Interrupt. So lieb ich dass. Und keine Formen und TextBoxen usw ;)
Aber bei meinem aktuellen Projekt braucht ich eine kleine PC Software dazu.
Danke für die Tipps, werde mich morgen früh wieder damit auseinanderetzen.
Peter
peterd - Mi 06.02.08 16:39
Also ich glaub ich bin zu blöd. Kann ja nicht mehr sein dass man ein Tag wegen so ner Sache braucht.
Also ich mache genau dass:
C#-Quelltext
1: 2: 3: 4: 5:
| private void Senden_Click(object sender, System.EventArgs e) { Form2 form = new Form2(); form.Show(); } |
Und mein 2tes Formular in der Projektmappe heisst Form2.
Dann bekomme ich deisen Fehler:
"Der Typ oder Namespace 'Form2' konnte nicht gefunden werden. Möglicherweise fehlt eine Anweisung oder ein Assemblyverweis."
Wenn ihr mir jetzt noch sagen könnten was ich wieder übersehen habe wäre ich sehr verbunden. Ich steh grad voll auf dem Schlauch.
peter
Moderiert von
Christian S.: C#-Tags hinzugefügt
bakachan - Mi 06.02.08 16:52
Guck mal im Code von deiner Form2 nach ob sie im gleichen Namespace liegt.
peterd - Mi 06.02.08 16:53
Hab den Fehler! Der namespace war bei Form1 und 2 unterschiedlich... :oops:
Trotzdem danke
Peter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!