Afbeelding bij combobox

Status
Niet open voor verdere reacties.

goedlichtJoost

Gebruiker
Lid geworden
7 mrt 2012
Berichten
477
Hallo allemaal,

Ik had een vraagje omtrent een afbeelding bij een combobox in C#.

Ik heb een combobox met daarin een drietal keuzes, nu staan deze keuzes voor een selectie doorsneden van profielen.
Nu zou ik graag wanneer de "benaming" van het profiel gekozen wordt uit de combobox, dat er dan een afbeelding komt van het gekozen profiel.

Nu zie ik dit ideaal voor me als een combobox waarin niet alleen de tekst staat maar daarachter direct de afbeelding (meerdere afbeeldingen dus gelijk).
Maar omdat ik niet zeker weet of dit mogelijk is binnen C# zou het natuurlijk ook kunnen om een combobox te maken met ernaast een picturebox.
Wanneer er nu een benaming gekozen wordt in de combobox, zal in de picturebox de juiste doorsnede weergegeven worden.

Nu weet ik alleen niet hoe ik dit aan moet gaan pakken, dus zou ik graag iemand vinden die mij een beetje op weg weet te helpen.
Ik denk dat hiervoor een timer toegevoegd dient te worden? die controleert of de waarde van de combobox is veranderd is en deze waarde "op kan halen". of kan dit direct via een "click-event / item-changed-event?

En hier kan dan de picturebox aangekoppeld worden, iets in de trend van:
Code:
if(combobox.text == "502") 
{
picturebox.picture = ..//doorsnede1.jpg;
}

En het volgende probleem is dan natuurlijk weer: waar sla je de plaatjes op? omdat je het liefst, wanneer het volledige programma klaar is, enkel de .exe file gebruikt?
Kun je de plaatjes hierin toevoegen? of moet ik de plaatjes op een vast adres op de server opslaan (werkt dan thuis bv niet?)

Conclusie: Erg veel vragen, is er hier misschien iemand die mij hier wat informatie over kan verschaffen of mij kan helpen?
Alles is welkom!
Alvast bedankt,

Met vriendelijke groet

Joost
 
Optie twee is gelukt, ik heb picture box aan combobox kunnen koppelen met event. Maar optie 1 zou ideaal zijn, als iemand het weet hoe dit moet (plaatjes in combobox zelf) dan hoor ik het graag!
 
Hier is een voorbeeld van een combobox met image, zoals je zet kun je ook gewoon meteen info over het profiel zoals de dikte (serial in voorbeeld) erbij zetten als het plaatje groter is (lijkt mij handig).

De plaatjes zijn gewoon simpelweg met een imagelist toe te voegen aan de combobox zoals je dat bij meerdere controls kunt doen. Ze worden dus gewoon in de exe ingebakken, maar als je er wilt toevoegen moet je de opnieuw compilen. Ook kun je dus je custom controls in een .dll bijvoegen en als het nodig is alleen de .dll vervangen.

En bij het toevoegen van een item aan de combobox heb ik een class bijgevoegd (zit in de zelfde file als de combobox) die in dit voorbeeld een name/serial/imageindex (index van de imagelist) neemt.

xek7yf.jpg


Project hier: http://dl.dropbox.com/u/63676419/DetailedComboBox.rar



Let wel, deze code is snel, simpel maar niet optimaal... maar zou je op weg moeten helpen want de basis werkt ;)
Mist nog dingen zoals checks wanneer je andere dingen in de combobox stopt ipv de specifieke class.

(als je die plaatjes en info over de profielen wilt uploaden wil ik wel eens een combobox of ander control daarvoor maken voor de fun :P altijd handig om dingen te maken die andere nodig hebben om zelf dingen bij te leren)
 
Hallo JoZ1,

Ik heb op codeproject gekeken en daar inderdaad wat handige code gevonden! hier heb ik ook de eerste optie gevonden haha, handige site!

Hallo Bloodshed,

Hartstikke bedankt voor je toevoeging, ik heb het bekeken en snap de methode van het items toevoegen met 3 waardes: naam, serial en index nummer(van de afbeelding)
Ik heb tevens de methode gevonden om een imagelist toe te voegen, en ben blij te horen dat deze in je Exe gebakken wordt (dus net zoals achtergronden etc kun je ook beter in een img list zetten?)

Ik vroeg me alleen af hoe je dan precies de opmaak hebt gemaakt van je combobox. Ik zie wel een .cs file die in de solution explorer staat, maar ik kan hier verder niet mee?
Want ik neem aan dat de drie waardes die je als item naar je combobox stuurt gekoppeld zijn aan een ontwerp (waarmee plaatsing lettertype en afmetingen wordt geregeld?)

Met vriendelijke groeten

Joost
 
Als je een achtergrond ergens hebt zou ik deze toevoegen aan de resources van je applicatie. Als je ergens een verzameling van afbeeldingen hebt zoals in je combobox is een imagelist een fijne oplossing. (een combinatie is natuurlijk ook mogelijk, net wat je nodig hebt)

Als je profielen een uniek nummer (serie nummer) hebben kun je dit gebruiken in de imagelist. Je geeft de afbeelding in de imagelist een naam gelijk aan het serie nummer zodat je deze op die manier kan ophalen i.p.v. een index nummer. Dan maakt de volgorde hoe de afbeeldingen in de imagelist staan ook niet meer uit.

De opmaak is zoals je zou verwachten te vinden in de nieuwe combobox class. Het font is gewoon het font wat je selecteert in de properties, en dit geld ook voor de forecolor etc.

Alles is te vinden in de OnDrawItem method, het plaatsen van de afbeelding, naam etc. Gewoon even zelf wat mee spelen. Er is genoeg mogelijk om precies te maken wat je nodig hebt.

Ik ben benieuwd naar je eigen versie!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan