none
set und get funktioniert nicht RRS feed

  • 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.


    Dienstag, 22. Mai 2012 11:33

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

    Dienstag, 22. Mai 2012 11:57
    Moderator

Alle Antworten