Laden...

Variable wird nicht an neue form übergeben

Erstellt von colt vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.120 Views
Thema geschlossen
C
colt Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren
Variable wird nicht an neue form übergeben

Hallo,

möchte gleich zu Anfang sagen, dass ich an dem Problem jetzt schon 2 Wochen sitze und mir sämtliche Tutorials durchgelesen und ausprobiert habe, sofern sie sich auf mein Programm umsetzen ließen. Das Forum hier habe ich auch benutzt, genauso wie MSDN und openbook.

Ich habe eine Variable in einem form1 (Loginbereich), die in ein MDIParent1 form übergeben werden soll, allerdings kommt sie anscheinend nie im MDIParent1 an.

Hier mal der code vom Loginbereich:

public void login_button_Click_1(object sender, EventArgs e)
        {
            MySql.Data.MySqlClient.MySqlCommand cmd;
            cmd = new MySql.Data.MySqlClient.MySqlCommand();
            string loginname = loginname_box.Text;
            string loginpassword = loginpassword_box.Text;
            string con = "data Source=xxx;user ID=xxx; Password=xxx; pooling=false; initial catalog=usr_web0_1";
            string user = String.Concat("SELECT user_name, user_admin_password, user_admin_salt FROM xxx_users WHERE user_name LIKE '%", loginname, "%'");
            MySqlConnection conn = new MySqlConnection(con);
            conn.Open();
            cmd.Connection = conn;
            cmd.CommandText = user;
            MySqlDataReader dr = cmd.ExecuteReader();
            string[] logindr;
            logindr = new string[3];
            dr.Read();
            logindr[0] = dr["user_name"].ToString();
            logindr[1] = dr["user_admin_password"].ToString();
            logindr[2] = dr["user_admin_salt"].ToString();
            dr.Close();

            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
            byte[] keyByte = encoding.GetBytes(logindr[2]);
            HMACSHA256 hmacsha256 = new HMACSHA256(keyByte);
            byte[] messageBytes = encoding.GetBytes(loginpassword);
            byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
            string hashpassword = ByteToString(hashmessage);


            if (loginname == logindr[0] && hashpassword == logindr[1])
            {
                MDIParent1 mdiuser = new MDIParent1();
                mdiuser.Variable = loginname;
                this.DialogResult = DialogResult.OK;
                
            }

Das MDIParent1 ersetzt dann den Loginbereich über ShowDialog. Dies habe ich in der Program.cs stehen:

static class Program
    {
        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        [STAThread]
        static void Main()
        {

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Loginbereich loginuebergabe = new Loginbereich();
            DialogResult dr = loginuebergabe.ShowDialog();
            if (dr == DialogResult.OK)
            {

                Application.Run(new MDIParent1());
            }

        }
    }

Und hier der Code von der MDIParent1, wo die Variable aufgerufen werden soll:

public string Variable { get; set; }

private void toolStripTextBox1_Click(object sender, EventArgs e)
        {
            this.Text = this.Variable;
        }

Diese würde dann quasi im MenuStrip als Menüpunkt angezeigt, was aber leider nicht der Fall ist.

Btw, ich weiß, dass es nicht richtig ist alles auf public zu setzen aber ich dachte mir: Erstmal alles zum Laufen bekommen, danach kann man immer noch am Code feilen.

Hoffe jemand hat nen guten Ansatz oder den Fehler im Code gefunden.

Danke und Gruß
colt

V
66 Beiträge seit 2010
vor 11 Jahren

Zur Kommunikation zwischen zwei Forms gibt es sogar einen FAQ-Beitrag: [FAQ] Kommunikation von 2 Forms

Hier scheint aber schon das Grundlagenwissen zu fehlen:

  
                MDIParent1 mdiuser = new MDIParent1();  
                mdiuser.Variable = loginname;  

Hier kaufst Du ein neues Auto und legst etwas hinein.

  
                Application.Run(new MDIParent1());  
  

Und hier kaufst Du ein anderes neues Auto. Erwartest Du jetzt, dass darin das selbe liegt, was Du in Dein erstes Auto reingelegt hast?

Aber das sind absolute Grundlagen und fällt unter [Hinweis] Wie poste ich richtig? Punkt 1.1.1

Thema geschlossen