JV Skrevet 12. februar 2008 Rapporter Del Skrevet 12. februar 2008 Hei Jeg har en tekstboks i en form hvor brukeren skal fylle inn no og så trykke OK. Det jeg da vil skal skje er at det som blir fylt ut der (textbox1.test) skal inn en listbox på ett annet form. Problemet er at jeg ikke finner f.eks listbox1 fra den aktuelle formen. Hva må jeg gjøre for å få til dette? Lenke til kommentar
Manfred Skrevet 12. februar 2008 Rapporter Del Skrevet 12. februar 2008 Det kommer litt an på hvordan dette er løst da? Åpner en form en annen? Åpnes begge av program.cs? har de referanse til hverandre? kan det kanskje løses vha events? Lenke til kommentar
JV Skrevet 12. februar 2008 Forfatter Rapporter Del Skrevet 12. februar 2008 form1 åpner form2. I form2 skriver en inn teksten og trykker ok. Da skal teksten legges inn i en listboks i form1. Lenke til kommentar
Manfred Skrevet 12. februar 2008 Rapporter Del Skrevet 12. februar 2008 (endret) Hvis du åpner form2 med: new Form2(this), så har du prinsippkoden i Form2: public partial class Form2 : Form { Form parent public Form2(Form p) { parent = p; } private void okButton_Click(object sender, EventArgs e) { parent.listBox1.Items.Add(..) this.Close(); } } kindof... Endret 12. februar 2008 av Manfred Lenke til kommentar
JV Skrevet 12. februar 2008 Forfatter Rapporter Del Skrevet 12. februar 2008 Jeg prøvde å gjøre det du skrev (selv om jeg ikke helt forstår det... newbie ) men får dette fremdeles ikke til å fungere. parent. gir meg ikke listbox1 som valg. Forsøkte å bare skrive det alikevell og får da såklart: 'System.Windows.Forms.Form' does not contain a definition for 'listbox1' Lenke til kommentar
Manfred Skrevet 12. februar 2008 Rapporter Del Skrevet 12. februar 2008 private void okButton_Click(object sender, EventArgs e) { (parent as Form1).listBox1.Items.Add(..) this.Close(); } Lenke til kommentar
dahwan Skrevet 2. mars 2008 Rapporter Del Skrevet 2. mars 2008 Hvis du bare skal dele en verdi, ville det ikke vært enklest å legge den i en statisk klasse i namespacet? static class Verdier { string tekst = ""; } I form1 setter du teksten Verdier.tekst = txtbox.Text; Og i form2 når du den listbox1.Items.Add(Verdier.tekst); Mulig dette ikke fungerer Jeg gadd ikke teste det. Veit ikke om en kan forandre noe i en statisk klasse eller ikke. Lenke til kommentar
GeirGrusom Skrevet 2. mars 2008 Rapporter Del Skrevet 2. mars 2008 man kan endre verdien i en statisk klasse så lenge objektet ikke er deklarert readonly public static class Verdier { public static string Hallo1 = "Hello World!" public static readonly string Hallo2 = "Hello World!"; public static int Main() { Hallo1 = "Hei verden!"; // Går fint Hallo2 = "Hei Verden!"; // Går ikke, Hallo2 er readonly. } } Men som regel så unngår man å lage statiske felter så mye man kan. Jeg pleier å ha en static versjon av hovedvinduet i MDI programmer: public static class Program { private static MainForm s_main; public static MainForm MainForm { get { return s_main;} } public static int main() { s_main = new MainForm(); Application.Run(s_main); } } Utover det, bruker jeg ikke statiske felter. Lenke til kommentar
Spartakus Skrevet 3. mars 2008 Rapporter Del Skrevet 3. mars 2008 (endret) Er vel like greit å lage en public variabel/property i form2 som du leser etter at du har fått DialogResult.OK fra form2. Eks: form2 public partial class form2: Form { public string myVar; public form2() { InitializeComponent(); } } form1: if(form2.ShowDialog() == DialogResult.OK) { this.textbox1.Text = form2.myVar; } Sørg for at du setter DialogResult-property'en på OK-knappen din i form2 til "OK". Edit: Hvis du skal gå direkte på form2.textbox1, så må du gå i designer-fila og endre modifier fra private til public. Endret 3. mars 2008 av Spartakus Lenke til kommentar
GeirGrusom Skrevet 3. mars 2008 Rapporter Del Skrevet 3. mars 2008 Nei, man skal ikke bruke public variabler, det er dårlig programmeringsskikk, og det er det en veldig god grunn til. Man bruker properties, fordi da er det programmet ditt som styrer innholdet i variabler, og du vet samtidig om variablen blir endret. Derfor bruke man alltid properties istedet for public variabler. Det som også skjer hvis du bruker property her, er at du programmatisk gjøre variablen read only. Selvom "Det er så mye enklere med public variabler" så er det utrolig dårlig programmeringsskikk å gjøre det. Lenke til kommentar
dahwan Skrevet 7. mars 2008 Rapporter Del Skrevet 7. mars 2008 Det du kunne gjort i form 1 public string PopUp() { this.ShowDialog(); return this.TextBox1.Text; } så i form 2 textbox1.Text = form1.PopUp(); this.ShowDialog(); På denne måten burde du først få opp form 1 så du kan skrive inn en verdi, så få opp form 2 med verdien i seg Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå