Avatar billede alex_sleiborg Nybegynder
09. november 2005 - 08:41 Der er 10 kommentarer og
1 løsning

Kalde txtBox_Fornavn_Find fra en anden klasse

Jeg skal kalde txtBox_Fornavn_Find fra en anden klasse, som er et tekst felt

Det gør jeg med

class CAnden
{
  public void hmm()
  {
      Find_Bruger fin = new Find_Bruger();
      MessageBox.Show("" + fin.txtBox_Fornavn_Find.Text + "");
  }
}
Jeg får ingen kompiler fejl, men der står ikke noget i messageboxen. Laver jeg en messagebox i den klasse hvor txtboxen bliver oprettet kan jeg sagtens se hva den indeholder

MessageBox.Show("" + this.txtBox_Fornavn_Find.Text + "");
Avatar billede spif2001 Nybegynder
09. november 2005 - 09:18 #1
Find_Bruger er en Form går jeg ud fra.

og du laver jo her en ny instans af formen, der aldrig har fået tekstboxens text sat.

Du bliver nød til at have en reference med ind til den form tekstboxen er på. A la

public void hmm(Find_Bruger fin)
  {
      MessageBox.Show("" + fin.txtBox_Fornavn_Find.Text + "");
  }

lidt bedre giv CAnden klassen en Find_Bruger global reference og smid formen med ind via en constructor:

class CAnden
{
  Find_Bruger fin;

  public CAnden(Find_Bruger form)
  {
    this.fin = form;
  }
  public void hmm()
  {
      MessageBox.Show("" + this.fin.txtBox_Fornavn_Find.Text + "");
  }
}
Avatar billede alex_sleiborg Nybegynder
09. november 2005 - 09:33 #2
Okay. Min hmm metode er statisk, så jeg får kompiler fejl. Hvordan gør jeg med en statisk metode???
Avatar billede spif2001 Nybegynder
09. november 2005 - 09:36 #3
public static void hmm(Find_Bruger fin)
  {
      MessageBox.Show("" + fin.txtBox_Fornavn_Find.Text + "");
  }

virker ikke?
Avatar billede alex_sleiborg Nybegynder
09. november 2005 - 09:38 #4
Nej her er hele koden

public class CFind_Bruger_Db
        {
            Find_Bruger fin;

            public CFind_Bruger_Db(Find_Bruger form)
            {
                this.fin = form;
            }
           
            public static ArrayList GetAll(Find_Bruger fin)
                {
                    string MyConnection = "server=127.0.0.1;uid=root;" +
                        "pwd=kommet;database=brugere;";
                   
                    //Laver Forbindelse til databasen
                    MySql.Data.MySqlClient.MySqlConnection Connect;
                    Connect            = new MySql.Data.MySqlClient.MySqlConnection();
                    Connect.ConnectionString = MyConnection;
           
                    Connect.Open();//Åbner forbindelse til databasen                                                       
                    MessageBox.Show("Getall metoden" + fin.txtBox_Fornavn_Find.Text + "");
                    MySql.Data.MySqlClient.MySqlCommand Command = new MySql.Data.MySqlClient.MySqlCommand("SELECT id,First_Name,Last_Name,Adresse,City,Birth FROM bruger WHERE First_Name LIKE '%'", Connect);
                    ArrayList find_list = new ArrayList();
                    MySql.Data.MySqlClient.MySqlDataReader rdr = Command.ExecuteReader();
                    while(rdr.Read())
                    {
                        find_list.Add(new CFind_Person((int)rdr[0], (string)rdr[1], (string)rdr[2], (string)rdr[3], (string)rdr[4], (int)rdr[5]));
                    }
                    rdr.Close();
                    Connect.Close();
                    return find_list;
           
                }
           
        }
Avatar billede alex_sleiborg Nybegynder
09. november 2005 - 09:39 #5
Godt nok lidt andre navne på klassen og metoden
Avatar billede spif2001 Nybegynder
09. november 2005 - 09:42 #6
Hvis du fjerne constructoren og den globale burde det virke. Hvad siger compileren der er galt?

public class CFind_Bruger_Db
        {
 
            public static ArrayList GetAll(Find_Bruger fin)
                {
                    string MyConnection = "server=127.0.0.1;uid=root;" +
                        "pwd=kommet;database=brugere;";
                 
                    //Laver Forbindelse til databasen
                    MySql.Data.MySqlClient.MySqlConnection Connect;
                    Connect            = new MySql.Data.MySqlClient.MySqlConnection();
                    Connect.ConnectionString = MyConnection;
         
                    Connect.Open();//Åbner forbindelse til databasen                                                     
                    MessageBox.Show("Getall metoden" + fin.txtBox_Fornavn_Find.Text + "");
                    MySql.Data.MySqlClient.MySqlCommand Command = new MySql.Data.MySqlClient.MySqlCommand("SELECT id,First_Name,Last_Name,Adresse,City,Birth FROM bruger WHERE First_Name LIKE '%'", Connect);
                    ArrayList find_list = new ArrayList();
                    MySql.Data.MySqlClient.MySqlDataReader rdr = Command.ExecuteReader();
                    while(rdr.Read())
                    {
                        find_list.Add(new CFind_Person((int)rdr[0], (string)rdr[1], (string)rdr[2], (string)rdr[3], (string)rdr[4], (int)rdr[5]));
                    }
                    rdr.Close();
                    Connect.Close();
                    return find_list;
         
                }
         
        }
Avatar billede alex_sleiborg Nybegynder
09. november 2005 - 09:48 #7
Når jeg kalder metoden, det gør jeg et andet sted i koden. Hvordan skal jeg gøre det?

Jeg får fejl ved

f.eks.
CFind_Bruger_Db.GetAll(Find_Bruger fin);
Avatar billede alex_sleiborg Nybegynder
09. november 2005 - 09:56 #8
Der er noget galt med det argument
Avatar billede spif2001 Nybegynder
09. november 2005 - 10:07 #9
Hvis du er  inde i formen der skal kalde er det:

CFind_Bruger_Db.GetAll(this);

da this er form klassen du er i.

Hvis det er et andet sted fra, skal du igen have en reference til den form og så skrive

CFind_Bruger_Db.GetAll(fin); //hvor fin er referencen til din form
Avatar billede alex_sleiborg Nybegynder
09. november 2005 - 10:30 #10
Nu virker det:)

Smid et svar
Avatar billede spif2001 Nybegynder
09. november 2005 - 10:31 #11
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester