Toon posts:

[C#] 2 gegevens aan combobox koppelen

Pagina: 1
Acties:
  • 229 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
In een bestand zoek ik naar regels die beginnen met '';$ '' (puntkomma - dollar - spatie). De gevonden regels worden in een combobox geplaatst.
Verder wordt er in de variabele "regel" het regelnummer gezet, maar het regelnummer gaat nou verloren.
Graag wil ik het regelnummer koppelen aan de items die in de combobox worden geschreven.

Mijn huidige code is :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void Form1_Activated(object sender, System.EventArgs e)
{
  String zoek_string = ";$ ";
  int regel=-1;
  // bestandsnaam koppelen aan sr
  StreamReader sr = File.OpenText("GRPGUARD.INI");
  String input;
  // zolang je geen eof tegenkomt
  // is voor vullen combobox met regel nummers
  while ((input=sr.ReadLine())!=null) 
  {
    regel++;
    //als er iets ingelezen wordt met de juiste string in de regel
    if (input.IndexOf(zoek_string) != -1)
    {
      comboBox2.Items.Add(input.Substring(3));
    }               
  }
  // sluiten van bestand
  sr.Close();
}


Wat ik dus wil bereiken is dat je een combobox hebt, met regels erin (de regels die begonnen met ";$ ", als je een van deze regels kiest, dat het programma dan ook weet op welke regel in het bestand dat ie staat.
Hiervoor moet dus een String (de regel) en een integer (regelnummer) gekoppeld worden aan elkaar in de combobox.

  • Markieman
  • Registratie: December 2001
  • Laatst online: 15-05 12:16
De combobox kan je zien als een array van 0...n string (of char*) elementen

Creer daarnaast een array met 0...n long elementen. In deze array zet je het regelnummer. Als iemand dan in de combobox element 8 selecteerd haal je uit de array de long in element 8 en daarin staat dan je regelnummer =)

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


  • whoami
  • Registratie: December 2000
  • Laatst online: 26-05 23:32
Maak een class die 2 fields heeft: een regelnr, en een display text.
Maak dan een ArrayList, en voeg voor ieder item dat je aan je combobox wilt toevoegen een nieuw object toe van die class aan je arraylist.
Gebruik je arraylist als datasource voor de combobox.

Zie ook hier klik
Markieman schreef op 31 maart 2004 @ 09:17:
De combobox kan je zien als een array van 0...n string (of char*) elementen

Creer daarnaast een array met 0...n long elementen. In deze array zet je het regelnummer. Als iemand dan in de combobox element 8 selecteerd haal je uit de array de long in element 8 en daarin staat dan je regelnummer =)
Wat als je regelnr's niet continuous zijn? Stel bv: regelnr1, 2, 4, 8, 20, ...

[ Voor 41% gewijzigd door whoami op 31-03-2004 09:26 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
wat Markieman bedoelt is dat het regelnummer (welk dat ook is) van het eerste item in de array op de eerste plaats staat, en van de 2de regel op de 2de plaats.

Een array kan je vullen met getallen als 1, 2, 4, 11, 25 enz enz

toch?

die manier van whoami snap ik weinig van :S
zal wel aan mij ligge, dat ut mij boven m'n pet gaat.
maar ik zou het wel graag willen snappen, is het possible dat d'r wat uitleg over komt?
en wat zijn eigenlijk de voor en nadelen van die manier?

is het trouwens mogelijk om een array te maken met onbekende grote ??
gewoon dat als je d'r 5 gegevens in wilt zetten, dat ie 5 groot is
en als je 15 regels wilt gebruiken dat ie 15 groot is?

[ Voor 38% gewijzigd door Verwijderd op 31-03-2004 09:37 ]


  • MichelVH
  • Registratie: Oktober 2001
  • Laatst online: 26-05 10:31
whoami schreef op 31 maart 2004 @ 09:25:
Wat als je regelnr's niet continuous zijn? Stel bv: regelnr1, 2, 4, 8, 20, ...
Voor het eerste item uit de combobox, wordt het regelnummer opgeslagen in het eerste item van de array (dus 1), voor het tweede item in het tweede item van de array (dus 2), voor het derde in het derde (dus 4), enz. Zou dus prima moeten werken lijkt me :)
edit:
hoi quantum19 :p

[ Voor 4% gewijzigd door MichelVH op 31-03-2004 09:34 ]

Don't be afraid of the dark, be afraid of what it hides


  • whoami
  • Registratie: December 2000
  • Laatst online: 26-05 23:32
TheDark schreef op 31 maart 2004 @ 09:33:
[...]
Voor het eerste item uit de combobox, wordt het regelnummer opgeslagen in het eerste item van de array (dus 1), voor het tweede item in het tweede item van de array (dus 2), voor het derde in het derde (dus 4), enz. Zou dus prima moeten werken lijkt me :)
edit:
hoi quantum19 :p
Mjah, ik vind mijn manier toch beter. :P Daar heb je alle bij elkaar horende info in 1 object, en kan je met de SelectedValue properties enzo van de combobox gaan werken.

quantum19: ik denk dat er voldoende info in het topic staat? Er wordt een class gemaakt, waarmee je voor ieder item in je combobox informatie kunt bijhouden. Je maakt dus voor iedere regel een object aanvan die class, en vult de waarden ervan op.
Je voegt ze toe aan een arraylist, en die arraylist kan je als datasource van je combobox gebruiken.
Op dezelfde manier als je een DataTable zou gebruiken als datasource, dat kan je nl. ook doen:
- maak een DataTable met 2 dataColumns, en maak voor ieder regelnr een DataRow aan met de juiste gegevens. Dan kan je die DataTable als datasource gebruiken.

https://fgheysels.github.io/


  • Markieman
  • Registratie: December 2001
  • Laatst online: 15-05 12:16
Verwijderd schreef op 31 maart 2004 @ 09:32:
wat Markieman bedoelt is dat het regelnummer (welk dat ook is) van het eerste item in de array op de eerste plaats staat, en van de 2de regel op de 2de plaats.

Een array kan je vullen met getallen als 1, 2, 4, 11, 25 enz enz

precies, in VB gebruik ik het regelmatig en werkt perfect. K heb nooit zin om met objecten en datasources en dat soort te werken. Misschien niet helemaal goed, maar dit is sneller =)

is het trouwens mogelijk om een array te maken met onbekende grote ??
gewoon dat als je d'r 5 gegevens in wilt zetten, dat ie 5 groot is
en als je 15 regels wilt gebruiken dat ie 15 groot is?

Yep, in c++ ging dit door middel van de new en delete parameters, je kan hem alleen niet tussentijds resizen. in c# lijkt me dat het wel kan, ik weet alleen niet hoe.

opmerking: mijn c/c++ kennis is beperkt, tot op heden richte ik mij meer op VB dus als ik iets onjuists over c/c++ meld, laat me dit aub weten.

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


  • whoami
  • Registratie: December 2000
  • Laatst online: 26-05 23:32
In C# kan je een ArrayList gebruiken als je een 'array' wilt van dynamische grootte.

https://fgheysels.github.io/


Verwijderd

Je kunt met ComboBox.SetItemData (nIndex, lRegel) een waarde aan een item hangen. Met ComboBox.GetItemData (nIndex) kun je hem weer ophalen.
nIndex is de waarde van het geselecteerde\toegevoegde item.

  • whoami
  • Registratie: December 2000
  • Laatst online: 26-05 23:32
Verwijderd schreef op 31 maart 2004 @ 10:00:
Je kunt met ComboBox.SetItemData (nIndex, lRegel) een waarde aan een item hangen. Met ComboBox.GetItemData (nIndex) kun je hem weer ophalen.
nIndex is de waarde van het geselecteerde\toegevoegde item.
Waar heb je dat gevonden? Ik vind er nl. niets over terug in de .NET help, en ook de intellisense kent die methods niet.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Als ik een ArrayList wil gebruiken, dan moet ik alles gaan converteren naar Objecten ed.
Het fijne van een Array is dat ik er gewone int's in kan dumpen

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:42

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 31 maart 2004 @ 10:43:
Als ik een ArrayList wil gebruiken, dan moet ik alles gaan converteren naar Objecten ed.
Het fijne van een Array is dat ik er gewone int's in kan dumpen
:?

Hoezo moet je alles gaan converteren naar objecten? Heb je het al geprobeerd? Verder kan je zien op http://msdn.microsoft.com...ollectionchangedtopic.asp
dat int32 ook afgeleid is van Object.

[ Voor 30% gewijzigd door gorgi_19 op 31-03-2004 10:47 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 26-05 23:32
Verwijderd schreef op 31 maart 2004 @ 10:43:
Als ik een ArrayList wil gebruiken, dan moet ik alles gaan converteren naar Objecten ed.
Het fijne van een Array is dat ik er gewone int's in kan dumpen
Dat kan je in een arraylist ook.
In .NET is alles nl. een object. Object is de 'parent' class van iedere andere class; alles is uiteindelijk van Object afgeleid.

int (het primitieve datatype) wordt -indien nodig- geboxed naar Int32

https://fgheysels.github.io/


Verwijderd

whoami schreef op 31 maart 2004 @ 10:03:
[...]


Waar heb je dat gevonden? Ik vind er nl. niets over terug in de .NET help, en ook de intellisense kent die methods niet.
Dit zijn standaard windows-API (C/C++). Misschien in .NET ComboBox.Item.SetItemData oid. Ik neem aan dat in .NET alle API's beschikbaar zijn...

Verwijderd

Volgens VB dus ItemData ... althans volgens MSDN

  • whoami
  • Registratie: December 2000
  • Laatst online: 26-05 23:32
VB != VB.NET of C#

https://fgheysels.github.io/


Verwijderd

Enige zoektocht leert dat deze API niet beschikbaar is in C#.
Bad Language ... ;)

  • whoami
  • Registratie: December 2000
  • Laatst online: 26-05 23:32
C# draait onder het .NET framework; dat is een class-library waarmee je die hele API's niet nodig hebt.
Je kan echter native API's aanspreken, maar dan is je code niet meer managed.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 26-05 23:32
quantum19: hoe heb je 't nu opgelost?

https://fgheysels.github.io/


Verwijderd

Je kan ook aan elk item een object hangen d.m.v. de Tag property. Hebben overigens wel meer componenten in .NET

  • whoami
  • Registratie: December 2000
  • Laatst online: 26-05 23:32
Verwijderd schreef op 31 maart 2004 @ 17:15:
Je kan ook aan elk item een object hangen d.m.v. de Tag property. Hebben overigens wel meer componenten in .NET
Een ListItem, of een ComboBoxItem (whatever, ik weet de exacte naam niet van buiten van die class) heeft geen Tag property of whatsoever.

https://fgheysels.github.io/


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

whoami schreef op 31 maart 2004 @ 21:48:
[...]

Een ListItem, of een ComboBoxItem (whatever, ik weet de exacte naam niet van buiten van die class) heeft geen Tag property of whatsoever.
Een combobox bevat alleen Objects, geen ComboBoxItems of (idd) whatever. En over je ArrayList/klasse/datasource methode... is het niet makkelijker om in je klasse te zeggen

C#:
1
2
3
4
public override string ToString()
{
    // ...
}

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • whoami
  • Registratie: December 2000
  • Laatst online: 26-05 23:32
Ok, maar, je kan dus je eigen class maken die je van Object inherit, zoals ik gedaan heb.

Het is misschien gemakkelijker om die ToString() zo toe te passen, maar dan moet je alle items gaan toevoegen aan de items property van je combobox, en kan je niet met de SelectedValue (oid) properties enzo gaan werken.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik heb het opgelost doormiddel van een Array (met grote van 100)
erg he...

ik wil het nog omzetten naar zo'n ArrayList, maar dat komt nog als ik tijd heb.

Verwijderd

whoami schreef op 31 maart 2004 @ 21:48:
[...]


Een ListItem, of een ComboBoxItem (whatever, ik weet de exacte naam niet van buiten van die class) heeft geen Tag property of whatsoever.
Oops sorry, ik dacht inderdaad even te gemakkelijk. :o
Pagina: 1