Benutzer mit den meisten Antworten
Mainform ohne load öffnen?

Frage
-
Hallo erst mal ich habe eine Mainform bei der beim starten ein Dialog geöffnet wird dieses Dialogfenster hat 3 Buttons einen zum abbrechen (führt direkt zum Mainfenster) einen der ein zweites Dialogfenster öffnet (bei dem kann man ein string eingeben) durch den übernehmen Button dieses Fensters sollte ich eigentlich auf mein Mainfenster kommen was es auch tut aber es nimmt den string nicht mit.
liegt es daran das mein Mainfenster noch nicht offen ist wenn ja würde ich es ja mit Mainfenster.Show(); öffnen aber dann kommt wieder das Dialogfenster (Vorfenster) oder lieg ich da völlig Falsch
und sollte das ganze anders angehen
Ohne das Load Dialogfenster Funktioniert alles bestens!
vielen Dank im voraus
Antworten
-
Ich würde es so machen, wie du im letzten Post. Letzten Endes hast du auch Eigenschaften erstellt und diese ausgefragt, wie ich im letzten Post, nur das ich das 3. Fenster als Modales Kindfenster von 2. Fenster festgelegt habe und statt das Result auszuwerten gleich die Eigenschaften abfragte.
Man könnte den Code aber noch etwas einkürzen, wobei das nicht notwendig ist:
public void FormSichpunteSammlung_Load(object sender, EventArgs e) { StichpunktesammlungDialog StichpunkDialog = new StichpunktesammlungDialog(); switch (StichpunkDialog.ShowDialog()) { case DialogResult.OK: ThemaDialog themaDialog = new ThemaDialog(); if (themaDialog.ShowDialog() == DialogResult.OK) { textBoxThema.Text = themaDialog.Thema; listBoxSichpunkte.Items.Clear(); textBoxEingabe.Select(); statusMeldung.Text = "Neues Thema: " + themaDialog.Thema; } else statusMeldung.Text = "Thema-Dialog abgebrochen"; break; case DialogResult.Yes: Öffnen(); break; } }
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets- Als Antwort vorgeschlagen Stefan Kleinewillinghoefer Donnerstag, 21. März 2013 09:33
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 26. März 2013 11:13
-
Hallo,
soweit ich dein Problem verstehe schaffst du es nicht den String auf Window3 in MainWindow zu übertragen. Dafür gibt es mehrere Wege. Der von mir Favorisierte ist der, das du in Window3 eine Eigenschaft anlegst, die nach außen hin lesbar ist und nur voin Window3 Membern beschreibbar. Nun kannst du der Eigenschaft einen Wert zuweisen und ihn so an Window2 weiter geben. Von Window2 zu MainWindow kannst du nochmal das selbe Prinzip anwenden.
Das "load" verwirrt mehr als das es hilft, ein Fenster wird immer erst geladen bevor es angezeigt wird.
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets- Als Antwort markiert TomSteiner Samstag, 30. März 2013 08:48
-
Den Code zu posten stört i.d.R. nicht. Als kurzes Beipiel, stark vereinfacht mal das was ich meinte:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { Window2 wnd = new Window2(); wnd.ShowDialog(); if (string.IsNullOrEmpty(wnd.StringResult)) { //Keine Daten, also Button1 oder Button2 wurde geklickt. } else { string result = wnd.StringResult; //Benutzereingabe auswerten } } } public partial class Window2 : Window { public Window2() { InitializeComponent(); } private void ButtonOpenInput_Click(object sender, RoutedEventArgs e) { Window3 wnd = new Window3(); wnd.ShowDialog(); if (string.IsNullOrEmpty(wnd.StringResult)) { //Benutzer hat auf Abbrechen geklickt } else { StringResult = wnd.StringResult; Close(); } } public string StringResult { get; private set; } } public partial class Window3 : Window { public Window3() { InitializeComponent(); } private void ButtonOK_Click(object sender, RoutedEventArgs e) { StringResult = textBox1.Text; Close(); } private void ButtonCancel_Click(object sender, RoutedEventArgs e) { StringResult = ""; Close(); } public string StringResult { get; private set; } }
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets- Als Antwort markiert TomSteiner Samstag, 30. März 2013 08:48
-
ich hab es jetzt so hinbekommen das es geht
wenn es schönere Lösungen gibt ich bin für alles offen
public void FormSichpunteSammlung_Load(object sender, EventArgs e) { StichpunktesammlungDialog StichpunkDialog = new StichpunktesammlungDialog(); DialogResult stichResult = StichpunkDialog.ShowDialog(); if (stichResult == DialogResult.OK) { ThemaDialog themaDialog = new ThemaDialog(); DialogResult themaResult = themaDialog.ShowDialog(); if (themaResult == DialogResult.OK) { textBoxThema.Text = themaDialog.Thema; listBoxSichpunkte.Items.Clear(); textBoxEingabe.Select(); statusMeldung.Text = "Neues Thema: " + themaDialog.Thema; } else statusMeldung.Text = "Thema-Dialog abgebrochen"; } if (stichResult == DialogResult.Yes) { Öffnen(); } }
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 26. März 2013 11:13
-
Hallo TomSteiner
wenn Dir die Antwort von Koopakiller geholfen hat, dann markiere sie bitte als Antwort.
Grüße,
Stefan Kleinewillinghoefer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwicklern“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden koennen.
- Als Antwort markiert TomSteiner Samstag, 30. März 2013 08:48
Alle Antworten
-
Hallo,
soweit ich dein Problem verstehe schaffst du es nicht den String auf Window3 in MainWindow zu übertragen. Dafür gibt es mehrere Wege. Der von mir Favorisierte ist der, das du in Window3 eine Eigenschaft anlegst, die nach außen hin lesbar ist und nur voin Window3 Membern beschreibbar. Nun kannst du der Eigenschaft einen Wert zuweisen und ihn so an Window2 weiter geben. Von Window2 zu MainWindow kannst du nochmal das selbe Prinzip anwenden.
Das "load" verwirrt mehr als das es hilft, ein Fenster wird immer erst geladen bevor es angezeigt wird.
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets- Als Antwort markiert TomSteiner Samstag, 30. März 2013 08:48
-
Da ich mich erst seit kurzem mit c# beschäftige verstehe ich nicht ganz wie du das meinst ich würde auch gern mein bisherigen Code posten wenn du mir anhand meines Codes mir das besser erklären könntest.
vorausgesetzt es stört nicht das ich den ganzen Code poste
-
Den Code zu posten stört i.d.R. nicht. Als kurzes Beipiel, stark vereinfacht mal das was ich meinte:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { Window2 wnd = new Window2(); wnd.ShowDialog(); if (string.IsNullOrEmpty(wnd.StringResult)) { //Keine Daten, also Button1 oder Button2 wurde geklickt. } else { string result = wnd.StringResult; //Benutzereingabe auswerten } } } public partial class Window2 : Window { public Window2() { InitializeComponent(); } private void ButtonOpenInput_Click(object sender, RoutedEventArgs e) { Window3 wnd = new Window3(); wnd.ShowDialog(); if (string.IsNullOrEmpty(wnd.StringResult)) { //Benutzer hat auf Abbrechen geklickt } else { StringResult = wnd.StringResult; Close(); } } public string StringResult { get; private set; } } public partial class Window3 : Window { public Window3() { InitializeComponent(); } private void ButtonOK_Click(object sender, RoutedEventArgs e) { StringResult = textBox1.Text; Close(); } private void ButtonCancel_Click(object sender, RoutedEventArgs e) { StringResult = ""; Close(); } public string StringResult { get; private set; } }
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets- Als Antwort markiert TomSteiner Samstag, 30. März 2013 08:48
-
Ok ich poste mal
Code:Mainfenster
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace Lektion4 { public partial class FormSichpunteSammlung : Form { public FormSichpunteSammlung() { InitializeComponent(); } private void buttonBeenden_Click(object sender, EventArgs e) { Application.Exit(); } private void buttonÜbernehmen_Click(object sender, EventArgs e) { listBoxSichpunkte.Items.Add(textBoxEingabe.Text); textBoxEingabe.Text = ""; textBoxEingabe.Focus(); this.statusMeldung.Text = "Eintrag übernommen"; } private void buttonNachOben_Click(object sender, EventArgs e) { int index = listBoxSichpunkte.SelectedIndex; if (index == 0) index = listBoxSichpunkte.Items.Count - 1; else index--; Verschieben(index); this.statusMeldung.Text = "Eintrag nach oben verschoben"; } private void buttonNachUnten_Click(object sender, EventArgs e) { int index = listBoxSichpunkte.SelectedIndex; if (index == listBoxSichpunkte.Items.Count - 1)index = 0; else index++; Verschieben(index); this.statusMeldung.Text = "Eintrag nach unten verschoben"; } private void Verschieben(int index) { Object item = listBoxSichpunkte.SelectedItem; listBoxSichpunkte.Items.Remove(item); listBoxSichpunkte.Items.Insert(index, item); listBoxSichpunkte.SelectedIndex = index; } private void buttonEintraglöschen_Click(object sender, EventArgs e) { if (listBoxSichpunkte.SelectedItem != null) { listBoxSichpunkte.Items.Remove(listBoxSichpunkte.SelectedItem); statusMeldung.Text = "Eintrag gelöscht"; } else { statusMeldung.Text = "Kein eintrag ausgewählt"; } } private void toolStripStatusLabelMeldung_Click(object sender, EventArgs e) { } private string fileName; private void speichernunterToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog speichernDialog = new SaveFileDialog(); speichernDialog.Title = "Stichpunkteliste speichern"; speichernDialog.Filter = "Textdateien (*.txt)|*.txt|Alle Dateien (*.*)|*.*"; DateTime zeit = DateTime.Now; if (fileName == null) { speichernDialog.FileName = zeit.ToString(" yy_mm_dd ") + textBoxThema.Text.Trim(); } else speichernDialog.FileName = fileName; DialogResult result = speichernDialog.ShowDialog(); if (result == DialogResult.OK) { Speichern(speichernDialog.FileName); fileName = speichernDialog.FileName; this.statusMeldung.Text = "Daten gespeichert"; } else this.statusMeldung.Text = "Speichern abgebrochen"; } private void speichernToolStripMenuItem_Click(object sender, EventArgs e) { if (this.fileName == null) this.speichernunterToolStripMenuItem_Click(sender, e); else this.Speichern(this.fileName); } private void speichernToolStripButton_Click(object sender, EventArgs e) { this.speichernunterToolStripMenuItem_Click(sender, e); } private void Speichern(string fileName) { StreamWriter writer = new StreamWriter(File.Open(fileName, FileMode.Create)); //Erst das Thema Speichern: writer.WriteLine(this.textBoxThema.Text.Trim()); // dann die ListBox-Inhalte: for (int i = 0; i < listBoxSichpunkte.Items.Count;i++) { writer.WriteLine(listBoxSichpunkte.Items[i].ToString()); } writer.Close(); this.statusMeldung.Text = "Datei \"" + fileName + "\" gespeichert"; } public void öffnenToolStripMenuItem_Click(object sender, EventArgs e) { Öffnen(); } public void Öffnen() { OpenFileDialog öffnenDialog = new OpenFileDialog(); öffnenDialog.Title = "Stichpunkteliste öffnen"; öffnenDialog.Filter = "Textdateien (*.txt)|*.txt|Alle Dateien (*.*)|*.*"; if (öffnenDialog.ShowDialog() == DialogResult.OK) { listBoxSichpunkte.Items.Clear(); StreamReader reader = new StreamReader(File.Open(öffnenDialog.FileName, FileMode.Open)); // erst das Thema lesen (erste Zeile): this.textBoxThema.Text = reader.ReadLine(); // ...dann den Rest string line; while ((line = reader.ReadLine()) != null) { listBoxSichpunkte.Items.Add(line); } reader.Close(); this.statusMeldung.Text = "Datei \"" + öffnenDialog.FileName + "\" geöffnet."; textBoxEingabe.Select(); } else this.statusMeldung.Text = " Öffnen Abgebrochen"; } public void neuToolStripMenuItem_Click(object sender, EventArgs e) { ThemaDialog themaDialog = new ThemaDialog(); DialogResult themaResult = themaDialog.ShowDialog(); if (themaResult == DialogResult.OK) { textBoxThema.Text = themaDialog.Thema; listBoxSichpunkte.Items.Clear(); textBoxEingabe.Select(); statusMeldung.Text = "Neues Thema: " + themaDialog.Thema; } else statusMeldung.Text = "Thema-Dialog abgebrochen"; } public void neuToolStripButton_Click(object sender, EventArgs e) { this.neuToolStripMenuItem_Click(sender, e); } private void hilfeToolStripButton_Click(object sender, EventArgs e) { HilfeDialog hilfe = new HilfeDialog(); hilfe.Show(); } public void öffnenToolStripButton_Click(object sender, EventArgs e) { this.öffnenToolStripMenuItem_Click(sender, e); } public void FormSichpunteSammlung_Load(object sender, EventArgs e) { StichpunktesammlungDialog StichpunkDialog = new StichpunktesammlungDialog(); StichpunkDialog.ShowDialog(); } } }
Code: ThemaDialogfenster
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Lektion4 { public partial class ThemaDialog : Form { public ThemaDialog() { InitializeComponent(); } public string thema; public string Thema { get { return thema; } } public void buttonÜbernehmen_Click(object sender, EventArgs e) { thema = textBox1.Text; } } }
Code: Stichpunktsammlung(das fenster was vor dem Mainfenster geladen wird)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Lektion4 { public partial class StichpunktesammlungDialog : Form { FormSichpunteSammlung mainform = new FormSichpunteSammlung(); public StichpunktesammlungDialog() { InitializeComponent(); } public void buttonListeÖffnen_Click(object sender, EventArgs e) { //mainform.öffnenToolStripMenuItem_Click(sender, e); } public void buttonNeueListe_Click(object sender, EventArgs e) { mainform.neuToolStripMenuItem_Click(sender, e); } } }
meine aufgabe ist es ein Dialogfenster zu erstellen das sich öffnet bevor sich die eigentliche Anwendung öffnet das sieht dann so aus
//konnte noch keine Bilder einfügen
von dem Button neue Liste soll ich zu diesem Fenster kommen wo ich den string eingeben kann
//konnte noch keine Bilder einfügen
wenn ich da auf übernehmen klicke sollte der eigentliche Text im Mainfenster bei Thema der Sammlung erscheinen.
//konnte noch keine Bilder einfügen
ich hoffe das war jetzt nicht zu viel Code ...
- Als Antwort markiert Stefan Kleinewillinghoefer Dienstag, 26. März 2013 10:07
- Tag als Antwort aufgehoben Tom Lambert (Koopakiller)Moderator Dienstag, 26. März 2013 11:13
-
ich hab es jetzt so hinbekommen das es geht
wenn es schönere Lösungen gibt ich bin für alles offen
public void FormSichpunteSammlung_Load(object sender, EventArgs e) { StichpunktesammlungDialog StichpunkDialog = new StichpunktesammlungDialog(); DialogResult stichResult = StichpunkDialog.ShowDialog(); if (stichResult == DialogResult.OK) { ThemaDialog themaDialog = new ThemaDialog(); DialogResult themaResult = themaDialog.ShowDialog(); if (themaResult == DialogResult.OK) { textBoxThema.Text = themaDialog.Thema; listBoxSichpunkte.Items.Clear(); textBoxEingabe.Select(); statusMeldung.Text = "Neues Thema: " + themaDialog.Thema; } else statusMeldung.Text = "Thema-Dialog abgebrochen"; } if (stichResult == DialogResult.Yes) { Öffnen(); } }
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 26. März 2013 11:13
-
Ich würde es so machen, wie du im letzten Post. Letzten Endes hast du auch Eigenschaften erstellt und diese ausgefragt, wie ich im letzten Post, nur das ich das 3. Fenster als Modales Kindfenster von 2. Fenster festgelegt habe und statt das Result auszuwerten gleich die Eigenschaften abfragte.
Man könnte den Code aber noch etwas einkürzen, wobei das nicht notwendig ist:
public void FormSichpunteSammlung_Load(object sender, EventArgs e) { StichpunktesammlungDialog StichpunkDialog = new StichpunktesammlungDialog(); switch (StichpunkDialog.ShowDialog()) { case DialogResult.OK: ThemaDialog themaDialog = new ThemaDialog(); if (themaDialog.ShowDialog() == DialogResult.OK) { textBoxThema.Text = themaDialog.Thema; listBoxSichpunkte.Items.Clear(); textBoxEingabe.Select(); statusMeldung.Text = "Neues Thema: " + themaDialog.Thema; } else statusMeldung.Text = "Thema-Dialog abgebrochen"; break; case DialogResult.Yes: Öffnen(); break; } }
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets- Als Antwort vorgeschlagen Stefan Kleinewillinghoefer Donnerstag, 21. März 2013 09:33
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Dienstag, 26. März 2013 11:13
-
Hallo TomSteiner
wenn Dir die Antwort von Koopakiller geholfen hat, dann markiere sie bitte als Antwort.
Grüße,
Stefan Kleinewillinghoefer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwicklern“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden koennen.
- Als Antwort markiert TomSteiner Samstag, 30. März 2013 08:48