Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Maj 2008

Click event på array c#

Lite dålig rubrik kanske.
Jag har skapat en klass som behandlar en picturebox tillsammans med en label, dvs först behandlar jag positionen av pictureboxen och utgår ifrån den när jag placerar labeln jämte åt höger. Och dessutom så lagrar den en sträng och en bild.
Det jag försöker göra är att skapa en lista med en bild och en label jämte bilden i varje rad. Sen när jag klickar på bilden eller labeln så ska en messagebox visas som visar strängen som lagrades med pictureboxen och labeln. Jag lagrar alla rader i en array, dvs Items[] i mitt fall.
Jag har lyckats skapa själva listan men nu är frågan hur ska jag göra för att börja ett klick event när jag klickar på en av list raderna och genom det kunna få ut informationen som lagras i just den raden av arrayn.

Lite svårt att förklara men om ni vill att jag ska ladda upp källkoden, på hur långt jag har kommit, kan jag göra det.

Jag använder Microsoft Visual Studio 2008 och programmerar för Windows (xp/vista/7)

Corsair 650W || MSI Z68A-GD65 (G3) || Asus R9 290 OCII || Intel i7 2600K, 3.4GHz || 4x4GB 1600MHz Corsair || Arch Linux || Fractal Design R4 || 120hz BenQ 24" 2ms + Benq 24" 2 ms || Cyborg Rat 7 || Corsair K90 || Logitech Z5500 5.1 Ljudsystem

Trädvy Permalänk
Medlem
Plats
Laholm
Registrerad
Okt 2005

Vad lagrar du? :S Både PictureBox och Label ärver från Control, vilket tillåter dig att binda funktioner till Control.Click evente.

ASP.NET programmerare i C#
Twitter: http://www.twitter.com/hagbarddenstore

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2004

Vet inte om det är vad du menar, men du kanske vill gå igenom alla items i Items[] med en foreach-loop, där du sätter eventet .Click till en metod som du skapat? Typ...

foreach(Item i in Items){ i.minPictureBox.Click += new ... // delegat till metoden under, jag har inte VS här // och kan inte syntaxen utantill, men skriv om du behöver hjälp } // ... private void clickedPB(object sender, EventArgs e){ PictureBox pb = (PictureBox)sender; MessageBox.Show(pb.ToString()); }

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Maj 2008

Jag tror jag lyckades nu, som sagt det var svårt att föklara så jag ska inte ge mig in på hur jag fixade det. Tack för svar!

Nu har jag dock problem med att spara min "custom"(Items[]) array, någon som vet något enkelt och bra sätt?

Säg till om källkod behövs för hjälp.

Corsair 650W || MSI Z68A-GD65 (G3) || Asus R9 290 OCII || Intel i7 2600K, 3.4GHz || 4x4GB 1600MHz Corsair || Arch Linux || Fractal Design R4 || 120hz BenQ 24" 2ms + Benq 24" 2 ms || Cyborg Rat 7 || Corsair K90 || Logitech Z5500 5.1 Ljudsystem

Trädvy Permalänk
Medlem
Registrerad
Jul 2001

Spara var?

Jag sover bäst under bord

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Maj 2008

Var som hellst så att jag kan ladda in det i programmet vid uppstart och spara vid nerstängning.

Går det att använda xml.serialize för detta? Jag har försökt lite med det men jag fattar inte riktigt hur jag ska få det att fungera.

min serialize kod(icke fungerande):

private void Form1_FormClosing(object sender, FormClosingEventArgs e) { XmlSerializer xs = new XmlSerializer(typeof(Items)); StreamWriter sw = new StreamWriter("config.xml"); xs.Serialize(sw, itemies); sw.Close(); }

Källkoden: http://rapidshare.com/files/264074510/Application_starter.rar.html

Corsair 650W || MSI Z68A-GD65 (G3) || Asus R9 290 OCII || Intel i7 2600K, 3.4GHz || 4x4GB 1600MHz Corsair || Arch Linux || Fractal Design R4 || 120hz BenQ 24" 2ms + Benq 24" 2 ms || Cyborg Rat 7 || Corsair K90 || Logitech Z5500 5.1 Ljudsystem

Trädvy Permalänk
Medlem
Registrerad
Jul 2001

Orka rapidshare, använd Codepaste.net eller dyl tjänst.

Jag sover bäst under bord

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Maj 2008

form1.cs
NewItem.cs
Items.cs

orkar inte ladda upp all kod, men det är den koden som jag har skrivit själv och den autogenerarade lämnade jag ute.

Corsair 650W || MSI Z68A-GD65 (G3) || Asus R9 290 OCII || Intel i7 2600K, 3.4GHz || 4x4GB 1600MHz Corsair || Arch Linux || Fractal Design R4 || 120hz BenQ 24" 2ms + Benq 24" 2 ms || Cyborg Rat 7 || Corsair K90 || Logitech Z5500 5.1 Ljudsystem

Trädvy Permalänk
Medlem
Registrerad
Aug 2002

För att serialisera egna objekt behöver du skapa din egen serialiseringsimplementation. Det gör du genom att ärva från ett serialiseringsinterface. Du vill använda dig av xml, så implementera IXMLSerializable

Interfacet ger dig tomma skalmetoder som du själv får skriva. Dessa metoder kallas sen när du kör Serialize-funktionen.

Googla "IXMLSerializable example" så hittar du lite exempel att gå efter.

Sony Vaio FE21M

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Maj 2008

Det verkar vara väldigt komplicerat, dessutom skriver alla så olika exempel att jag har svårt att fatta vad dem sker. Om någon kunde visa lite hur man skulle kunna göra med min kod skulle det vara väldigt uppskattat. Jag är trots allt nybörjare på c# så jag förstår oftast inte hur de komplicerade sakerna fungerar.

Vad jag ser verkar det inte finnas något bra exempel hur man kan köra serializing på en array som min.

Corsair 650W || MSI Z68A-GD65 (G3) || Asus R9 290 OCII || Intel i7 2600K, 3.4GHz || 4x4GB 1600MHz Corsair || Arch Linux || Fractal Design R4 || 120hz BenQ 24" 2ms + Benq 24" 2 ms || Cyborg Rat 7 || Corsair K90 || Logitech Z5500 5.1 Ljudsystem

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Maj 2008

Jag har typ löst det nu fast jag skippade serialization och använde mig av en helt vanlig text fil. Jag gjorde felet att jag tänkte att jag måste spara alla information jag har, sen kom jag på att jag har en funktion som gör att det enda jag behöver spara är namn och path

Corsair 650W || MSI Z68A-GD65 (G3) || Asus R9 290 OCII || Intel i7 2600K, 3.4GHz || 4x4GB 1600MHz Corsair || Arch Linux || Fractal Design R4 || 120hz BenQ 24" 2ms + Benq 24" 2 ms || Cyborg Rat 7 || Corsair K90 || Logitech Z5500 5.1 Ljudsystem