Halli Hallo und
Zitat: |
Bin ich denn gerade so blöd ? |
Nope bist du nicht. Frühlingsrolle hat dich einfach nur falsch verstanden.
Also was mir bei deinem Code auffält ist:
1. Die Properties
NeueBreite und
NeueHöhe haben keinen Getter, d.h. du kannst sie nur setzen, aber nicht abfragen!
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| public string NeueBreite { set { this.textBoxBreite.Text = value; } get { return this.textBoxBreite.Text;} }
public string NeueHoehe { set { this.textBoxHoehe.Text = value; } get { return this.textBoxHoehe.Text; } } |
Dass hierbei die Text Property der Textboxen getunnelt wird finde ich jetzt nicht so schlimm. In WinForms ist UI und Code sowieso viel zu eng verdrahtet.
2. Du rufst die Form
Groesse 2x auf:
C#-Quelltext
1: 2: 3: 4:
| if (Groesse.ShowDialog() == System.Windows.Forms.DialogResult.OK) Groesse.NeueBreite = this.toolStripStatusLabel1.Text; Groesse.NeueHoehe = Convert.ToString(pictureBox1.Height); Groesse.ShowDialog(); |
Das zweite mal kannst du dir schenken, da die Form schon bei der ersten Markierung geöffnet wird. Daher ergeben sich diese Folgeprobleme:
2.1 Du öffnest die Form und wartest mit
ShowDialog() darauf, dass sie geschlossen wird. Erst wenn die Form geschlossen wird, werden deine Werte an sie übergeben, was dann logischerweise zu spät ist.
2.2 Der if-Block hat keine Klammern, was bedeutet, dass nur die nächste Zeile von der if-Bedingung abhängig ist, sprich:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| Groesse Groesse = new Groesse();
if (Groesse.ShowDialog() == System.Windows.Forms.DialogResult.OK) { Groesse.NeueBreite = this.toolStripStatusLabel1.Text; } Groesse.NeueHoehe = Convert.ToString(pictureBox1.Height); Groesse.ShowDialog(); |
Damit dein Code funktioniert, müsste er ungefähr so aussehen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Groesse Groesse = new Groesse(); Groesse.NeueBreite = this.toolStripStatusLabel1.Text; Groesse.NeueHoehe = Convert.ToString(pictureBox1.Height);
if (Groesse.ShowDialog() == System.Windows.Forms.DialogResult.OK) { } else { } |
Den oberen Teil kannst du noch etwas schöner schreiben, da hilft dir das
object initializer Verfahren:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| Groesse Groesse = new Groesse { NeueBreite = this.toolStripStatusLabel1.Text; NeueHoehe = Convert.ToString(pictureBox1.Height); };
if (Groesse.ShowDialog() == System.Windows.Forms.DialogResult.OK) { } else { } |
Die Funktion des Codes ist die selbe, es ist nur eine andere schreibweise.
Natürlich musst du dann bei deinem Button Click Event in der Form
Groesse auch
DialogResult = DialogResult.OK setzen, bevor du die Form wieder schließt.
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler