24. november 2005 - 13:01Der er
43 kommentarer og 1 løsning
opdaterer array i form1 fra form2
Jeg har et array på min form1 der indeholder nogle værdier. Disse værdier indsættes i textbokse på form2. Herfra vil jeg gerne kunne opdatere mit array på form1, således at hvis jeg lukker form2 og åbner den igen vil de rettede værdier nu stå i mine textbokse.
Her er hvad jeg gør når jeg smider værdierne ind i form2: Form2 form2 = new Form2(this); form2.textBox1.Text = behold[0,0].ToString(); form2.textBox2.Text = behold[1, 0].ToString(); form2.textBox3.Text = behold[2, 0].ToString(); form2.textBox4.Text = behold[3, 0].ToString(); form2.textBox5.Text = behold[4, 0].ToString(); form2.textBox6.Text = behold[5, 0].ToString(); form2.textBox7.Text = behold[6, 0].ToString(); form2.textBox8.Text = behold[7, 0].ToString(); form2.textBox9.Text = behold[8, 0].ToString(); form2.textBox10.Text = behold[9, 0].ToString(); form2.Show();
Giv gerne et eksempel på hvordan jeg herefter gør i form2 for at opdatere form1.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
du sender Form1 med som this når du opretter en instans af Form2. Den variabel som du får ind i konstruktøren i Form2 kan du bruger på denne måde: du har noget i denne stil public Form2(Form owner) { //typecast owner. Form1 form1 = (Form1)owner; //nu kan du bruger behold i hele form2 form1.Behold[] osv }
Nu har jeg tilgang til arrayet på min form 2, men hvis jeg laver en: form1.behold[0, 1] = Convert.ToDouble(textBox1.Text); opdateres arrayet ikke på form1.
Det er stadig det samme, når jeg lukker min form2 efter at have rettet værdien, og herfeter åbner den igen fra form1 er værdien den samme som før jeg rettede. Så jeg har ikke fået opdateret mit array.
ja på form1-form_load : for (int i = 0; i < 10; i++) { behold[i,0] = 1; behold[i,1] = 15; } men jeg reloader jo ikke min form1, så det burde ikke have indvirkning på dette
form1: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;
namespace WindowsApplication2 { public partial class Form1 : Form { public double[,] behold = new double[10,2]; double[,] coins = { {0.25,3,0}, {0.50,3,0}, {1,3,0}, {2,2,0}, {5,1,0}, {10,3,0}, {20,3,0} };
form2: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;
namespace WindowsApplication2 { public partial class Form2 : Form { private Form1 form1; public Form2(Form owner) { form1 = (Form1)owner;
nej jeg har ikke lige noget sted der udskriver arrayet på form1, dog blir der tjekket på om værdien er større end 0. Men jeg kan hurtigt sætte et label til at udskrive den første værdi, den som jeg tester på.
nej fordi at han parsede en instans af form1 til en private form1 i Form2. På den måde kunne han ændre data i form1 men det blev aldrig ført ned til Form1 instansen. p.ga. private. så galdt ændringerne kun i Form2.
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.