cub71 Skrevet 15. august 2006 Del Skrevet 15. august 2006 Jeg har et enkelt WinForm-program med to forms. Hvordan får jeg tilgang til variabler (string) i form2 som er definert i form1? Jeg finner ikke noe info om dette rundt omkring. Lenke til kommentar
alftore Skrevet 15. august 2006 Del Skrevet 15. august 2006 (endret) Du må ha en referanse til den andre formen. 1) via Owner variabelen Form2 f = new Form2(); f.Owner = this; f.Show(); 2) Via en custom constructor Form2 f = new Form2(this); public partial class Form2 : Form { public Form1 m_frmMain = null; public Form2() { InitializeComponent(); } public Form2(Form1 frmMain) : this() { m_frmMain = frmMain; } } 3) Via en property Form2 f = new Form2(); f.MainForm = this; f.Show(); public partial class Form2 : Form { public Form1 m_frmMain = null; public Form2() { InitializeComponent(); } public Form1 MainForm { get { return m_frmMain; } set { m_frmMain = value; } } } Endret 15. august 2006 av alftore Lenke til kommentar
strykejern Skrevet 26. august 2006 Del Skrevet 26. august 2006 Hvis det er en public string skal du vel da bare trenge å skrive Form1.VariabelenDin Lenke til kommentar
Svish Skrevet 10. september 2006 Del Skrevet 10. september 2006 Men så langt jeg vet må Form2 fortsatt vite om Form1 hvis den skal kunne bruke Form1.VariabelenDin Skal man bruke noe i klasse A som er i klasse B så må klasse A vite om klasse B på et eller annet vis Lenke til kommentar
wolf5 Skrevet 11. september 2006 Del Skrevet 11. september 2006 (endret) Du kan f.eks endre i Program.cs fra using System; using System.Collections.Generic; using System.Windows.Forms; namespace TestApp02 { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } til using System; using System.Collections.Generic; using System.Windows.Forms; namespace TestApp02 { static class Program { public static Form1 MinForm1 = new Form1(); public static Form2 MinForm2 = new Form2(); /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(MinForm1); } } } Da kan du hvor som helst i all koden din kalle: object x = Program.MinForm1.EnVariabel; object y = Program.MinForm2.EnAnnenVariabel; Altså Form1 og Form2 har du en global instans av som du raskt får tilgang via Program.MinForm1 og Program.MinForm2 Skal du derimot åpne flere instanser av Form2 vinduet er de tidligere nevnte løsninger over en bedre måte å gjøre dette på. Da må nemlig Form1 vite nøyaktig hvilket av ørten Form2 vinduer den skal hente info fra. Endret 11. september 2006 av wolf5 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å