Autor Beitrag
peterd
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mi 06.02.08 09:02 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mi 06.02.08 09: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mi 06.02.08 09: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 06.02.08 10:05 
bakachan hat schon recht, dafür musst du auf jeden Fall eine neue Form erstellen. Ist kein Weltuntergang ;) .
peterd Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mi 06.02.08 15: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.

ausblenden 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 user profile iconChristian S.: C#-Tags hinzugefügt
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mi 06.02.08 16: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:
ausblenden 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
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: Mi 06.02.08 16: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:
ausblenden 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
//  in MainForm deklarieren
private Form2 form2 = null;

//  den ersten Aufruf
private void Senden_Click(object sender, System.EventArgs e)
{
  if (form2 == null)
    form2 = new Form2();
  form2.Show();
}

//  weitere Aktualisierungen, von wo aus auch immer
  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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mi 06.02.08 16: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mi 06.02.08 17: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:
ausblenden 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 user profile iconChristian S.: C#-Tags hinzugefügt
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mi 06.02.08 17:52 
Guck mal im Code von deiner Form2 nach ob sie im gleichen Namespace liegt.
peterd Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mi 06.02.08 17:53 
Hab den Fehler! Der namespace war bei Form1 und 2 unterschiedlich... :oops:

Trotzdem danke

Peter