Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[C#] Dynamische achtergrond van button

DarkCrusader
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, hier vind je wat meer informatie over type conversie in C#

Beantwoord deze vraag

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