Permalänk

c# komma åt lista

Hej har en lista i form1 som jag skulle vilja komma åt i form2, hur gör jag detta på enklast sätt?

Visa signatur

CPU: Intel core i5 3450 | GPU: Asus Radeon HD 7870 | PSU: Corsair GS 600W | Moderkort: MSI b75a-g43 | HDD WD blue 500 GB | RAM: Crucial ballistiX 2x4gb DDR3 1600MHz | Ljudkort: Asus Xonar DG |

Permalänk
Hedersmedlem

Hur känner Form1 och Form2 varandra? Om det ena fönstret öppnar det andra kan du skicka med en länk till listan när du gör det.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem

Public Static List<t> Namn

Sedan i form 2 skriver du:

Form1.Namn

Visa signatur

Corsair 750D | i5 4670k | ASUS Z87-a | 8GB Corsair Dominator | Asus GTX770-DC2OC | Samsung 840 EVO 250GB | WD 500GB X2

Permalänk
Medlem

gör en public metod för att komma åt listan. tex något sånt här (kommer inte ihåg exakt hur det ser ut men något liknande.)
skapar du bara ett nytt objekt av listan i form2.

Var ett tag sen jag sysslade med c# så rätta mig om det är fel.

public List<String> SendList()
{
return Lista;
}

Permalänk
Skrivet av giplet:

Hur känner Form1 och Form2 varandra? Om det ena fönstret öppnar det andra kan du skicka med en länk till listan när du gör det.

Hur menar du? jag öppnar den nya formen så här

var form2 = new Form2(); form2.ShowDialog();

Skrivet av reflect:

Public Static List<t> Namn

Sedan i form 2 skriver du:

Form1.Namn

Det funkar inte, kommer bara upp controlacces och 3 andra förslag.

Visa signatur

CPU: Intel core i5 3450 | GPU: Asus Radeon HD 7870 | PSU: Corsair GS 600W | Moderkort: MSI b75a-g43 | HDD WD blue 500 GB | RAM: Crucial ballistiX 2x4gb DDR3 1600MHz | Ljudkort: Asus Xonar DG |

Permalänk
Medlem
Skrivet av turbogeten:

Det funkar inte, kommer bara upp controlacces och 3 andra förslag.

Konstigt, det fungerade bra när jag försökte.

Postar väl den kod jag har:

public partial class Form1 : Form { public static List<string> asd = new List<string>(); public Form1() { InitializeComponent(); Form2 f = new Form2(); f.Show(); } private void button1_Click(object sender, EventArgs e) { asd.Add(textBox1.Text); } }

Och för form2:

public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { foreach (string s in Form1.asd) { richTextBox1.Text += s + Environment.NewLine; } } }

Kom ihåg att denna kod även låter dig hämta information när du vill. Om nya saker läggs till.

Visa signatur

Corsair 750D | i5 4670k | ASUS Z87-a | 8GB Corsair Dominator | Asus GTX770-DC2OC | Samsung 840 EVO 250GB | WD 500GB X2

Permalänk
Skrivet av reflect:

Konstigt, det fungerade bra när jag försökte.

Postar väl den kod jag har:

public partial class Form1 : Form { public static List<string> asd = new List<string>(); public Form1() { InitializeComponent(); Form2 f = new Form2(); f.Show(); } private void button1_Click(object sender, EventArgs e) { asd.Add(textBox1.Text); } }

Och för form2:

public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { foreach (string s in Form1.asd) { richTextBox1.Text += s + Environment.NewLine; } } }

Kom ihåg att denna kod även låter dig hämta information när du vill. Om nya saker läggs till.

Tack, fick det att funka nu

Visa signatur

CPU: Intel core i5 3450 | GPU: Asus Radeon HD 7870 | PSU: Corsair GS 600W | Moderkort: MSI b75a-g43 | HDD WD blue 500 GB | RAM: Crucial ballistiX 2x4gb DDR3 1600MHz | Ljudkort: Asus Xonar DG |

Permalänk
Avstängd

Fönster ska inte känna till varandra, istället tycker jag du ska publicera ett event i det ena fönstret som det andra fönstret lyssnar på. Läs på om Event aggregators. Här har du en light weight Event aggregator att ladda ned

http://www.nuget.org/packages/Caliburn.Micro.EventAggregator/

Visa signatur