Benutzer mit den meisten Antworten
set und get funktioniert nicht

Frage
-
Hallo Leutem
ich habe ein Problem beim Übegeben eines Strings an mein Programm. Ich möchte einen Pfad in Form eines String an mein Haupprogramm aus meiner Form übergen, zur Testzwekcen soll er einfach nur in einer Message Box angezeigt werden. Ich bekomme keine Fehlermeldung nur.
Programm.cs
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace DateienEinlesenV0_2 { static class Program { /// <summary> /// Der Haupteinstiegspunkt für die Anwendung. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmÖffnen()); frmÖffnen Öffnen = new frmÖffnen(); string strPfad = Öffnen.Pfad; MessageBox.Show("Der Pfad ist" + strPfad, "der Pfad ist" + strPfad, MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
frmÖffnen.cs
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; using System.Text.RegularExpressions; namespace DateienEinlesenV0_2 { public partial class frmÖffnen : Form { public frmÖffnen() { InitializeComponent(); } public string Pfad //Diesen Wert möchte ich verwenden. { get { return txtPfad.Text; } set { Pfad = value; } } /// <summary> /// Datei öffnen /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <returns>Pfad</returns> private void cmdOpenFile_Click(object sender, EventArgs e) { string strPfad = string.Empty; OpenFileDialog FileDialog1 = new OpenFileDialog(); FileDialog1.Filter = "txt files (*.txt)|*.txt|csv Dateien (*.csv)| *.csv|All files (*.*)|*.*"; if (FileDialog1.ShowDialog() == DialogResult.OK) strPfad = FileDialog1.FileName; txtPfad.Text = strPfad; } /// <summary> /// Prüfung ob Datei vorhanden ist /// </summary> /// <param name="Pfad">Pfad</param> /// <returns>true = vorhanden</returns> private bool DateiPrüfung(string Pfad) { if (File.Exists(Pfad)) { return true; } else { MessageBox.Show("Die Datei ist nicht Vorhanden\rBitte klicken sie auf 'Öffnen' und geben sie den Pfad erneut ein", "Datei nicht vorhanden", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); return false; } } private void cmdEinlesen_Click(object sender, EventArgs e) { if (DateiPrüfung(txtPfad.Text) == true) { Close(); } } private void cmdOpenFile_Click_1(object sender, EventArgs e) { OpenFileDialog FileDialog1 = new OpenFileDialog(); FileDialog1.Filter = "txt files (*.txt)|*.txt|csv Dateien (*.csv)| *.csv|All files (*.*)|*.*"; if (FileDialog1.ShowDialog() == DialogResult.OK) txtPfad.Text = FileDialog1.FileName; } } }
Eingabe Maske
Beim debuggen strPfad kein Wert drinn.
Antworten
-
Hi,
public string Pfad //Diesen Wert möchte ich verwenden. { get { return txtPfad.Text; } set { Pfad = value; } }
wie soll das auch funktionieren? Zum einen öffnest Du zwar das entsprechende Formular, der Pfad wird ja aber vor der Anzeige in der MessageBox nie zugewiesen?
Zum anderen ist dein Konstrukt etwas komisch. Nimm einfach eine ganz normale Eigenschaft ohne Code im Get und Set Zweig, siehe:
http://msdn.microsoft.com/de-de/library/bb384054.aspx
und arbeite dann damit. txtPfad_OnChange (Eventhandler natürlich nicht vergessen), kannst Du dann Pfad = txtPfad.Text setzen und in dem anderen Formular dann auch wieder mit string xyz = Öffnen.Pfad; auslesen.
So oder so musst Du aber dafür sorgen, dass deine MessageBox erst angezeigt wird, wenn der Pfad auch mal ausgewählt wurde.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert Breitenhofer Freitag, 8. Juni 2012 11:05
Alle Antworten
-
Hi,
public string Pfad //Diesen Wert möchte ich verwenden. { get { return txtPfad.Text; } set { Pfad = value; } }
wie soll das auch funktionieren? Zum einen öffnest Du zwar das entsprechende Formular, der Pfad wird ja aber vor der Anzeige in der MessageBox nie zugewiesen?
Zum anderen ist dein Konstrukt etwas komisch. Nimm einfach eine ganz normale Eigenschaft ohne Code im Get und Set Zweig, siehe:
http://msdn.microsoft.com/de-de/library/bb384054.aspx
und arbeite dann damit. txtPfad_OnChange (Eventhandler natürlich nicht vergessen), kannst Du dann Pfad = txtPfad.Text setzen und in dem anderen Formular dann auch wieder mit string xyz = Öffnen.Pfad; auslesen.
So oder so musst Du aber dafür sorgen, dass deine MessageBox erst angezeigt wird, wenn der Pfad auch mal ausgewählt wurde.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert Breitenhofer Freitag, 8. Juni 2012 11:05
-
Hallo Florian.Reiter,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.