02. september 2004 - 22:53
Der er
19 kommentarer og 1 løsning
Hjælp til "transport" af data fra form til form og tilbage
Jeg har en form med et arraylist. Denne form åbner form2. I form2 skal der så rettes i arraylisten Hvordan gøres det? kan jeg i form2 få direkte adgang til arraylisten?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
02. september 2004 - 23:51
#1
ja det kan du godt...det du gør er at i form1 sætter du din arraylist som public static. Og herefter kan du kalde den i form2: form1.arraylistnavn
03. september 2004 - 06:49
#2
form2 skal vel have en reference med til form1??
03. september 2004 - 08:23
#3
du kan evt give en reference til form1 med i forms2's constructor.
03. september 2004 - 14:40
#4
Hvordan laves en reference?
03. september 2004 - 14:45
#5
I det konkrete tilfælde kan du sikkert bruge this.
03. september 2004 - 14:46
#6
i form1: form2 minForm2 = new form2(this); i form2: public class form2 : System.Forms.Form { private refTilForm; public form2(form minReference) { refTilForm = minReference; } }
03. september 2004 - 14:48
#7
kom lige med lidt kode. jeg ved ikke helt hvad jeg skal referer til og hvordan
03. september 2004 - 14:52
#8
nåå
03. september 2004 - 15:06
#9
Jeg kan ikke helt få det til at virke.. Kan i se hvad der er galt? ... public ArrayList V_KundeListe = new ArrayList(); ... private void knp_Ret_Click(object sender, EventArgs e) { Ret_Interface Ret_I = new Ret_Interface(this); Ret_I.Show(); } ... Anden Form: ... using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; namespace Kundelist { public class Ret_Interface : System.Windows.Forms.Form { private Form Ref_til_Interface; private System.ComponentModel.Container components = null; public Ret_Interface(Form MinRef) { Ref_til_Interface = MinRef; InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code private void InitializeComponent() { this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 266); this.Name = "Ret_Interface"; this.Text = "Ret Kunde"; } #endregion private void test() { } } }
03. september 2004 - 15:09
#10
Jeg kan godt få fat i form1, men variablen kan jeg ikke se - Jeg har prøvet: private void test() { Ref_til_Interface. (Men så findes arraylist ikke?) }
03. september 2004 - 15:14
#11
den vil findes runtime. grunden til den ikke er der i intellisense er at di reference er baseret på "Form" ikke "Form1". private Form1 Ref_til_Interface; private System.ComponentModel.Container components = null; public Ret_Interface(Form1 MinRef) { Ref_til_Interface = MinRef; InitializeComponent(); }
03. september 2004 - 15:26
#12
Nu har jeg rettet den som du skriver. Men den findes stadig ikke i intellesense, burde den ikke det? Min første form hedder Interface. public class Ret_Interface : System.Windows.Forms.Form { private Interface Ref_til_Interface; private System.ComponentModel.Container components = null; public Ret_Interface(Interface MinRef) { Ref_til_Interface = MinRef; InitializeComponent(); }
03. september 2004 - 15:31
#13
lig akkurat Interface er ikke et så heldigt navn. det er vist et reserveret ord i .NET. prøv at kalde den noget andet og rekompiler
03. september 2004 - 15:37
#14
Jeg har løst det på en anden måde, istedet for at sende hele formen Ret_Interface Ret_I = new Ret_Interface(this); Så sender jeg bare Arraylisten i stedet. Ret_Interface Ret_I = new Ret_Interface(V_KundeListe); Så resten med referencen fint. Men hvad så hvis jeg retter i noget data, er det så i Interface det bliver rettet eller Ret_Interface, eller begge steder?
03. september 2004 - 15:41
#15
Da det er en reference til et object er det instansen der bliver opdateret. dvs den bliver opdateret som du ønsker. Læs evt noget om Object orienteret programmering.
03. september 2004 - 15:47
#16
Jeg prøver - men det er hårdt bare at læse fra A-Z, så jeg læser når jeg har brug for noget Svarer en referance til en pointer i c++
03. september 2004 - 15:50
#17
jeps
03. september 2004 - 15:52
#18
men i modsætning til c++ kan man ikke i C# have en pointer til en pointer. desuden sørger .NEt selv for at rydde op i gamle "pointers" (referencer) når de ike er i brug mere. En undtagelse til dette er dog referencer til åbne filer o.l.
03. september 2004 - 16:01
#19
_et tag evt, et kig på dette spg. Jeg har selv haft næsten samme problem, bare med en label jeg ville ændre.
http://www.eksperten.dk/spm/531838
03. september 2004 - 16:02
#20
Cool, nu virker det. Egentlig burde jeg vide at jeg kunne sende data på den måde.
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.