Vraag & Antwoord

Programmeren

[C#] Dynamische achtergrond van button

5 antwoorden
  • Goedemiddag, Ik ben bezig met dynamische buttons, en elke button heeft een andere achtergrond nodig. De plaatjes staan in me resource en op deze manier haal ik ze eruit: [code:1:97442f9ed7]KlasButton.BackgroundImage = global::WindowsFormsApplication1.Resource.ResourceManager.GetObject(Convert.ToString(OdbcDR[1]));[/code:1:97442f9ed7] Ik krijg dan de foutmelding: [quote:97442f9ed7]Error 1 Cannot implicitly convert type 'object' to 'System.Drawing.Image'. An explicit conversion exists (are you missing a cast?) [/quote:97442f9ed7] De plaatjes naam haal ik uit de database en convert ik dus naar een string. Omdat GetObject een string nodig heeft. Waarom zegt hij nu dat het een object is? Bedankt!
  • [quote:6f9313e1d0="DarkCrusader"] Waarom zegt hij nu dat het een object is?[/quote:6f9313e1d0] Get[b:6f9313e1d0]Object[/b:6f9313e1d0], de naam van de functie zegt het al: je krijgt een object terug. Deze code zou moeten werken: [code:1:6f9313e1d0]KlasButton.BackgroundImage = (System.Drawing.Image)global::WindowsFormsApplication1.Resource.ResourceManager.GetObject(Convert.ToString(OdbcDR[1]));[/code:1:6f9313e1d0]Hiermee geef je aan dat het object wat opgehaald wordt met GetObject van het type System.Drawing.Image is.
  • Ok het werkt. Maar "(System.Drawing.Image)" maakt er toch geen string van? Of loop ik nu scheef te kijken.
  • [quote:78724d8a9f="DarkCrusader"]Ok het werkt. Maar "(System.Drawing.Image)" maakt er toch geen string van? Of loop ik nu scheef te kijken.[/quote:78724d8a9f]BackgroundImage is ook geen string, maar een object van het type System.Drawing.Image. Daarom wordt er ook een object van dat type verwacht. Ik denk dat je een paar dingen door elkaar hebt gehaald: De functie GetObject verwacht een parameter van het type String. Die heb je dus goed geconverteerd. Wat de functie teruggeeft is een object van het type Object. De compiler verwacht echter een object van het type System.Drawing.Image wanneer je een achtergrondplaatje wil zetten via KlasButton.BackgroundImage. De compiler kan niet zomaar een object van het type Object naar een object van het type Image converteren (impliciet converteren). Dat moet jij als programmeur dus aangeven door voor de call naar GetObject aan te geven via [b:78724d8a9f](System.Drawing.Image)[/b:78724d8a9f] dat het object dat door deze functie wordt geretourneerd van het type Image is (expliciet converteren).
  • Oh ja, [url=http://msdn.microsoft.com/en-us/library/ms173105.aspx]hier[/url] vind je wat meer informatie over type conversie in C#

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.