Avatar billede jomi Nybegynder
31. oktober 2005 - 10:30 Der er 9 kommentarer og
1 løsning

String til Array of String

I form editoren (Visual C#.Net)har jeg oprettet 81 (9x9) RichTextBoxe. Jeg ønsker at overføre data (strengen) fra disse boxe til et Array af strenge (9x9). Kan dette gøres direkte på en eller anden fiks måde eller er man tvunget til at skrive 81 linier hvor man overfører dem enkeltvis?
Avatar billede nielle Nybegynder
31. oktober 2005 - 10:37 #1
Med denne lille kodestump:

foreach (Control control in this.Controls)
{
    if (control is RichTextBox)
    {
        MessageBox.Show(control.Name);
    }
}

- får du udskrevet navnene på alle dine RichTextBox'e.

Denne løkke kan modifiseres sådan at du, ud fra navnet på den enkelte RichTextBox, kan bestemme hvilken array-indgang teksten skal gemmes i.
Avatar billede anadan Nybegynder
31. oktober 2005 - 17:14 #2
smid dine textboxe over i et array

for(int i = 0; i< myTextBoxesArray.Length; i++){
  myStringArray[i] = myTextBoxesArray[i].Text;
}
Avatar billede anadan Nybegynder
31. oktober 2005 - 17:15 #3
kan også laves som 2-dim self.
Avatar billede Lars Søndergaard Nybegynder
31. oktober 2005 - 19:58 #4
forslag: opret dem i hjemmelavede klasseobjekter og smid dem evt ind i en arraylist
Avatar billede jomi Nybegynder
01. november 2005 - 10:11 #5
Jeg har forsøgt mig med nielles løsning. Mit problem er nok manglende erfaring med OOP så det skal nok skæres ud i pap. Jeg fik heller ikke fortalt at mine RichBoxe er anbragt på 9 Panels. Hvis jeg udkommenterer if-sætningen får jeg udskrevet panels men ikke RichBoxe. Data i hver RichBox skal vel blot være et tal hvis jeg skal bruge det som indgang til et array?
Avatar billede nielle Nybegynder
01. november 2005 - 19:40 #6
Ud over lidt polymorfi har det nu ikke meget at gøre med OOP. :^)

Med denne kode kommer du ud og besøger samtlige RichTextBox'e - også selv om de er indlejret i et eller flere lag af paneler:

private void button1_Click(object sender, System.EventArgs e)
{
    VisitControls(this.Controls);
}

private void VisitControls(System.Windows.Forms.Control.ControlCollection controls)
{
    foreach (Control control in controls)
    {
        if (control is Panel)
        {
            VisitControls(((Panel)control).Controls);
        }
        else if (control is RichTextBox)
        {
            MessageBox.Show(control.Name);
        }
    }
}
Avatar billede jomi Nybegynder
03. november 2005 - 08:16 #7
Tak for hjælpen nielle nu kører det hele perfekt.
Avatar billede jomi Nybegynder
03. november 2005 - 11:26 #8
Hvis du sender et svar nielle så skal jeg kvittere med 30 point
Avatar billede nielle Nybegynder
03. november 2005 - 17:35 #9
Svar :^)
Avatar billede nielle Nybegynder
04. november 2005 - 12:36 #10
... doh :^)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester