08. marts 2012 - 14:26Der er
9 kommentarer og 1 løsning
Overføre variabel mellem en form og en klasse
Hej
Jeg har problemer med at overføre en variabel fra en form og benytte den i en klasse. Jeg har prøvet forskellige ting men jeg får kun overført en tom string. Jeg har en textbox i klassen Form1 hvor jeg gemmer det indtastede i en variabel (vardi). Det virker fint. Problemet er når jeg vil bruge denne variabel i klassen ConnectionNF så er variablen et tomt felt. (jeg skal bruge variablen til at hente data ud fra en database)
public class Form1 { public string vardi; public void button1_Click(object sender, EventArgs e) { try { this.Text = textBox1.Text; vardi = textBox1.Text.ToString();
Jeg har problemer med at få sendt værdien over til klassen ConnectionNF. Jeg får fejlen: 'NFtoKP.ConnectionNF' does not contain a constructor that takes 1 arguments' når jeg prøver at sende this videre til ConnectionNF
Klassen ser således ud: Hvor jeg kalder getDataNF()(som er den metode der skal bruge værdien fra Form1) i createConNF()
public class ConnectionNF { Form1 frm1 = new Form1();
public void createConNF() { //...Opretter forbindelse til SQLServer... getDataNF(frm1); }
public void getDataNF(Form1 form1) { this.frm1 = form1; try { //Henter data ud af en tabel og viser det i konsollen string queryString = "select * from fmwo\\sqlexpress].nfsql1.dbo.tblPersondata WHERE CPR='" + frm1.vardi + "'";
using (SqlCommand myCommandtwo = new SqlCommand (queryString, myConnection)) { using (SqlDataReader myReader = myCommandtwo.ExecuteReader()) { while (myReader.Read()) { string cpr = myReader.GetString(0); string fornavn = myReader.GetString(1); string efternavn = myReader.GetString(2); // Write the values read from the //database to the screen.
public class ConnectionNF { private readonly Form1 frm1;
public ConnectionNF(Form1 form1) { this.frm1 = form1; }
public void getDataNF() { try { //Henter data ud af en tabel og viser det i konsollen string queryString = "select * from fmwo\\sqlexpress].nfsql1.dbo.tblPersondata WHERE CPR='" + frm1.vardi + "'";
using (SqlCommand myCommandtwo = new SqlCommand (queryString, myConnection)) { using (SqlDataReader myReader = myCommandtwo.ExecuteReader()) { while (myReader.Read()) { string cpr = myReader.GetString(0); string fornavn = myReader.GetString(1); string efternavn = myReader.GetString(2); // Write the values read from the //database to the screen.
I din form skal du så sende "this" med din dennes constructor.
var connection = new ConnectionNF(this); connection.getDataNF();
Igen fra mit tidligere svar ...
Form1 form1 = new Form1(); Form1 form2 = new Form1();
Overstående 2 instances er ikke ens ... og derfor virekr det ikke som du har gjort tidligere ... der har du allerede en instance af Form1 hvor du har intastet data i ... og i din ConnectionNF klasse opretter du en ny instance, og den indeholder ikke de data. Derfor det ikke virker.
Og som en lille analogi ... fordi ford laver 1000 biler ud fra samme blue print, så er det jo ikke samme bil. De opfører sig kun på samme måde.
Ja jeg fandt selv lige ud af at jeg selvfølgelig manglede en konstruktør af klassen ConnectionNF. Flot. Men det virker og tak for hjælpen buzzzz. Smid et svar så får du point :)
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.