Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
public MainWindow() { InitializeComponent(); Closed += OnMainWindowClosed; } private void OnMainWindowClosed(object sender, RoutedEventArgs e) { //speichere deine Einstellungen. } |
Ok, danke für die Erklärung.Modal heißt, dass nur dieser Dialog aktuell angewählt werden kann und der darunter nicht in den Vordergrund geholt werden kann - laienhaft gesprochen.
Ich gehe aber davon aus, dass Du ihn genau so verwendest. Und wenn der Dialog geschlossen wird, kannst Du die Eigenschaften von diesem doch einfach abfragen. Ob er geschlossen wurde oder nicht, ist erstmal egal, die Instanz an sich ist doch noch da und auch noch gültig.
Ich habe meistens auch immer WindowsForms benutzt, aber einerseits wurde online sehr oft Wpf empfohlen und zudem hat auch die Firma in der ich ein Schülerpraktikum gemacht habe gesagt, dass niemand mehr WindowsForms benutzt und ich deswegen lieber auch Wpf verwenden sollte.
Ohne DataBindings lass die Finger von WPF, dann missbrauchst du das Framework nur. WPF ist für eine MVVM-Architektur gedacht und dafür auch ideal. alles andere nimm bitte Winforms. Wenn du beim Verlassen des Fensters speichern möchtest, wäre, das Closed-Event korrekt. Das kannst du einfach wie folgt machen:
C#-Quelltext
1
2
3
4
5
6
7
8
9
10
public MainWindow()
{
InitializeComponent();
Closed += OnMainWindowClosed;
}
private void OnMainWindowClosed(object sender, RoutedEventArgs e)
{
//speichere deine Einstellungen.
}
Welchen Anwendungsfall hast du denn, dass du etwas beim schließen gespeichert wird? Wenn man es übrigens korrekt nach MVVM bauen möchte, muss man beim schliessen des Fensters etwas tricksen.
C#-Quelltext |
|
1 |
Properties.Settings.Default.FirstUserSetting = "abc"; |
Ok, dann werde ich mir dazu mal etwas durchlesen.Aber um beim eigentlichen Thema zu bleiben: Wenn dir, MitgliedXYZ, DataBinding kein Begriff ist, dann solltest du dich mal darüber (am besten direkt in Verbindung mit dem MVVM-Pattern) informieren. Denn erst dann ist es überhaupt sinnvoll WPF zu benutzen. Events gibt es in WinForms genau so
C#-Quelltext |
|
1 2 3 4 5 |
public event EventHandler ButtonClick; protected void b1_Click(object sender, RoutedEventArgs e) { if (this.ButtonClick != null) this.ButtonClick(this, e); } |
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
private void Window_Loaded(object sender, RoutedEventArgs e) { //... MailItem[] mails = new MailItem[anzMails]; mails[0] = new MailItem(); mails[0].Absender = "Fritz@muser.de"; //... stackPanel1.Children.Add(mails[0]); mails[0].ButtonClick += new EventHandler(UserControl_ButtonClick); //... } protected void UserControl_ButtonClick(object sender, EventArgs e) { //... } |
C#-Quelltext |
|
1 2 |
if (this.ButtonClick != null) this.ButtonClick(sender, e); |
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
protected void UserControl_ButtonClick(object sender, EventArgs e) { int buttonIndex = Array.IndexOf(mails, sender); MessageBox.Show(buttonIndex.ToString()); } |
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
namespace MailSupport { public partial class MailItem : UserControl { public int MailID = 0; public string Betreff = ""; public string Inhalt = ""; public string Datum = ""; public string Absender = ""; public bool IstAusgewaehlt = false; public MailItem() { InitializeComponent(); AktualisiereDesign(); } private void UserControl_Loaded(object sender, RoutedEventArgs e) { } public void AktualisiereDesign() { tbAbsender.Text = Absender; tbBetreff.Text = Betreff; tbDatum.Text = Datum; } public event EventHandler ButtonClick; protected void b1_Click(object sender, RoutedEventArgs e) { NachrichtAuswaehlen(); if (this.ButtonClick != null) this.ButtonClick(sender, e); } public void NachrichtAuswaehlen() { IstAusgewaehlt = true; tbAbsender.Foreground = new SolidColorBrush(Colors.Blue); tbBetreff.Foreground = new SolidColorBrush(Colors.Blue); tbDatum.Foreground = new SolidColorBrush(Colors.Blue); } public void NachrichtNichtAuswaehlen() { IstAusgewaehlt = false; tbAbsender.Foreground = new SolidColorBrush(Colors.Black); tbBetreff.Foreground = new SolidColorBrush(Colors.Black); tbDatum.Foreground = new SolidColorBrush(Colors.Black); } }} |
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
namespace MailSupport{ public partial class MainWindow : Window { int AktuelleMail; string EmailAdresse; string Benutzername; string Passwort; string Server; int AktualisierungsZeit; Einstellungen einstellung; MailItem[] mails; public MainWindow() { InitializeComponent(); } private void scrollViewer1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { } private void bSenden_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Senden"); } private void bWeiterleiten_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Weiterleiten"); } private void bLoeschen_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Löschen"); } private void bMuster_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Musterbrief"); } private void bWissen_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Wissensdatenbank"); } private void bEinstellungen_Click(object sender, RoutedEventArgs e) { einstellung = new Einstellungen(); einstellung.EinstellungClosing += new EventHandler(einstellung_closing); einstellung.ShowDialog(); } protected void einstellung_closing(object sender, EventArgs e) { EmailAdresse = Properties.Settings.Default.Email; Benutzername = Properties.Settings.Default.Benutzer; Passwort = Properties.Settings.Default.Passwort; Server = Properties.Settings.Default.Server; AktualisierungsZeit = Properties.Settings.Default.AktualisierZeit; } private void bNeueMail_Click(object sender, RoutedEventArgs e) { MessageBox.Show("NeueMail"); } public void mailAuswahl(int id) { AktuelleMail = 0; } public void LadeWarteschlange() { } private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { MessageBox.Show("Anwendung wird beendet."); } public void LadeEinstellungen() { EmailAdresse = Properties.Settings.Default.Email; Benutzername = Properties.Settings.Default.Benutzer; Passwort = Properties.Settings.Default.Passwort; AktualisierungsZeit = Properties.Settings.Default.AktualisierZeit; } private void Window_Loaded(object sender, RoutedEventArgs e) { LadeEinstellungen(); LadeWarteschlange(); lBetreff.Text = ""; lInhalt.Text = ""; bSenden.Opacity = 0; bWeiterleiten.Opacity = 0; bLoeschen.Opacity = 0; bMuster.Opacity = 0; bWissen.Opacity = 0; bEinstellungen.Opacity = 0; bNeueMail.Opacity = 0; //Dies ist Testcode, zum Simulieren einiger eMails mails = new MailItem[10]; mails[0] = new MailItem(); mails[0].Absender = "Fritz@muser.de"; mails[0].Datum = "17:00 04.07.3013"; mails[0].Betreff = "Test eMail"; mails[0].AktualisiereDesign(); stackPanel1.Children.Add(mails[0]); mails[0].ButtonClick += new EventHandler(UserControl_ButtonClick); mails[1] = new MailItem(); mails[1].Absender = "mustermann@beispielfirma.net"; mails[1].Datum = "17:01 04.07.3013"; mails[1].Betreff = "Zweite Test Mail"; mails[1].AktualisiereDesign(); stackPanel1.Children.Add(mails[1]); mails[1].ButtonClick += new EventHandler(UserControl_ButtonClick); //Ende des Testcodes } protected void UserControl_ButtonClick(object sender, EventArgs e) { int buttonIndex = Array.IndexOf(mails, sender); MessageBox.Show(buttonIndex.ToString()); } }} |
Quellcode |
|
1 2 3 4 5 6 |
while( Parent is not MailItem) { Parent = Parent.Parent } // Parent ist jetzt ein MailItem |
C#-Quelltext |
|
1 2 3 4 5 6 7 |
protected void b1_Click(object sender, RoutedEventArgs e) {NachrichtAuswaehlen(); while( Parent =! MailItem){ Parent = Parent.Parent} if (this.ButtonClick != null) this.ButtonClick(Parent, e); } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »MitgliedXYZ« (06.07.2013, 18:19)
Werbeanzeige