Jeg sidder lige pt og har en rigtig trist problem i min Windows Forms Application. Jeg har en Form1 klasse som starter sådan her:
public partial class Form1 : Form { public Form1() { InitializeComponent(); }
Der er så oprettet en masse ting i, blandt andet nogle text boxs.
Jeg har ligeledes nogle forskellige klasser, og det er så her mit store problem kommer.
Hvis jeg har en customer klasse, hvor jeg har en variable "Customer_name" som jeg gerne vil have skrevet i "Customer_name_textBox" som ligger i Form1, hvordan gør jeg så dette?
Jeg har forsøgt mig i stor stil med: "Form1 mainform = new Form1();" //denne skrives i den respektive klasse (evt. en Customer klasse)
&
"Klassenavn Klasse_a = new Klassenavn()" //denne skrives i Form1 klassen.
Jeg kan simpelthen ikke få min Customer klasse til at skrive, og vise en tekst i de Textboxe som er oprettet i Form1.
Jeg håber virkelig på noget hurtig hjælp da det som sagt, er lidt akut!
private void GetCus_b3_t1_Click(object sender, EventArgs e) { Customer customer1 = new Customer(); int C_id = Convert.ToInt32(CusID_textBox_t1.Text); customer1.GetCustomerToBox(C_id); }
Den går altså ind og finder ud af hvad der står i den pågældende textBox (ved button tryk) og så kalder den en metode fra klassen "Customer" som hedder "GetCustomerToBox".
Det der så sker inde i metoden i "Customer" er at jeg henter kunde informationen fra en database, og vil så fra metoden i "Customer" klassen, skrive den information jeg har trukket ud af databasen, i nogle tekstbox, som er oprettet i Form1.
Håber virkelig der er nogle der ude der kan hjælpe mig!
I din Form1 ... har du ikke oprettet dine TextBox som public ... ret sikker på de som standard er private ...
Dvs: Form1 form = new Form1();
form1.DinTextBox ikke er tilgændelig fordi den er private i din Form1 klasse.
Løsning lave dine textbox's public eller lade din constructor tage en parameter Customer ... og så sætte de forskellige variable din Load eventuen på din Form1.
Jeg har været inde under de textBoxs som skal bruges af andre klasser til "public".
Problemet ligger lidt, hvis jeg i en anden klasse forsøger at smide noget ind i den pågældende textbox fra Form1, så kan jeg også godt hente en værdi ud af den (eks. MessageBox.Show()).
Altså tror min Customer klasse at der rent faktisk er en værdi i den pågældende textbox.
Ligeledes kan min Customer klasse ikke "se" at der står noget i den rigtige textbox, da værdien jeg evt. har indtastet, ikke kan ses i Customer Klasse.
Hvis du vil have koden til hvad jeg gør ved "GetCustomer(Cust_id);" siger du bare til, men egentlig henter jeg kunde information ud af en database, smider det ind i et objekt, og smider det objekt ind i en arraylist.
Når jeg har loadet programmet (debug mode) så kan jeg fint hente kunde ID over i Customer klassen, og derfra burde alt køre som smurt, og jeg får heller ingen fejl.
Alle kunde informationer er gemt, men de bliver ikke skrevet i de respektive textboxs.
De textbox som mit program viser, forbliver med andre ord blanke.
Problemer er at du allerede er på Form1 ... som jeg forventer du vil opdatere ... men i Customer opretter du en ny Form1 ... altså er det ikke samme Form1 du skriver dine data i.
Der er flere løsninger. Nemmeste for mig at beskrive er følgende.
Ændre din funktions header til: public void GetCustomerToBox(Form1 form, int Cust_id)
og brug den i funktionen ... i stedet for at oprette en ny.
I din første Form1 gør du således: customer.GetCustomerToBox(this, Convert.ToInt32(CusID_textBox_t1.Text));
Synes godt om
Ny brugerNybegynder
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.