[VB.NET] Custom controls toevoegen @runtime

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Moi_in_actie
  • Registratie: Maart 2007
  • Laatst online: 11-10 23:13
Hallo mensen,

Ik ben op dit moment wat dingen aan het uitproberen met een dynamische UI. Daarbij heb ik een FlowLayoutPanel waar ik dan at runtime items aan wil toevoegen of verwijderen.
Nu werkt dit allemaal heel eenvoudig en prima wanneer ik bijvoorbeeld een standaard button toevoeg, maar niet bij een custom control. Deze custom control wordt een soort icoon/snelkoppeling met daarbij een backgroundimage, tekst, tooltip, link etc.

Hierbij moet ik vermelden dat in het eerste opzicht de custom control zelf wel in orde is. Als ik deze tijdens het ontwerpen in Visual Studio naar datzelfde FlowLayoutPanel sleep, wordt die netjes toegevoegd. Ook events van de control (click, mouseover, tooltip) werken dan prima.
Ik heb al gekeken of de controls wel daadwerkelijk worden toegevoegd aan de FlowLayoutPanel door het te debuggen, maar dat worden ze gewoon. Toevoegen doe ik middels de volgende code:

Dim shortcut As New Shortcut(background, text, link, tooltip)
LayoutOverzicht.Controls.Add(shortcut)

Ik heb al verschillende dingen geprobeerd, zoals een Invalidate() of Refresh() na het toevoegen de control maar dat mocht niet baten.

Iemand enige ervaring hiermee? Ik gok dat het weer eens iets heel eenvoudigs is wat ik vergeet maar ik kom er helaas niet op :P

Ryzen 9 9950X3D ~~ 32GB GSkill TridentZ 6000Mhz ~~ ASRock B850M Steel Legend ~~ Powercolor Hellhound RX9070XT


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Even een wilde gok uit de blote pols :P OnPaint e.d. geïmplementeerd? Misschien een .Visible = True oid?

[ Voor 23% gewijzigd door RobIII op 02-12-2011 15:59 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Moi_in_actie
  • Registratie: Maart 2007
  • Laatst online: 11-10 23:13
OnPaint is geïmplementeerd, visibility nog eens op true zetten brengt helaas ook niets.

Ryzen 9 9950X3D ~~ 32GB GSkill TridentZ 6000Mhz ~~ ASRock B850M Steel Legend ~~ Powercolor Hellhound RX9070XT


Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 09-10 15:53
Kan je een screenshotje tonen van wat jij krijgt?

Net even getest met een een klein projectje, maar hier werkt het gewoon. Dus het lijkt mij dat de fout ergens in je control zelf zit.

[ Voor 58% gewijzigd door urk_forever op 02-12-2011 16:29 ]

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Lijkt me een probleem met je custom control, die je Shortcut (een al bestaande naam) hebt genoemd. Waarschijnlijk doet jouw constructor niet de juiste dingen, zoals InitializeComponent() aanroepen. :p

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Helpt het als je iets van afmetingen meegeeft aan het control dat je wilt toevoegen aan je FlowLayoutPane?

We are shaping the future


Acties:
  • 0 Henk 'm!

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 04-10 00:19
code:
1
2
Control control = this.LoadControl("control.ascx");
flowPanelLayout.Controls.Add(control);


C# code, maar gebruik je 'LoadControl' ?
Blijkbaar niet.. Om het Dynamisch in te laden, moet je zover ik weet LoadControl gebruiken. Anders werkt het niet.

See MSDN: LoadControl Method (String)

[ Voor 49% gewijzigd door mrFoce op 04-12-2011 07:15 ]


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Dat geldt alleen voor ASP.NET, en alleen voor UserControls waar de HTML in een .ascx staat.

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Moi_in_actie
  • Registratie: Maart 2007
  • Laatst online: 11-10 23:13
urk_forever schreef op vrijdag 02 december 2011 @ 16:12:
Kan je een screenshotje tonen van wat jij krijgt?

Net even getest met een een klein projectje, maar hier werkt het gewoon. Dus het lijkt mij dat de fout ergens in je control zelf zit.
Ik gok inderdaad dat het iets is met mn eigen usercontrol, want gewone buttons toevoegen werkt wel.
Wat betreft screenshot is er denk ik weinig te zien. Met de eigen usercontrol krijg ik niets, met buttons krijg ik buttons toegevoegd. Ik zal nog eens even verder gaan zoeken en wat research doen naar usercontrols.

Ryzen 9 9950X3D ~~ 32GB GSkill TridentZ 6000Mhz ~~ ASRock B850M Steel Legend ~~ Powercolor Hellhound RX9070XT


Acties:
  • 0 Henk 'm!

  • Moi_in_actie
  • Registratie: Maart 2007
  • Laatst online: 11-10 23:13
Probleem is inmiddels opgelost. Klaarblijkelijk zat hem de fout bij het instellen van de size. Bij het aanmaken van een nieuw object werden wel de instellingen width en height gemaakt (wat ik dacht dat genoeg zou zijn), maar schijnbaar was dit niet genoeg en had het ding dus een formaat van 0 bij 0.
Zoals ik al dacht was het dus iets eenvoudigs, alleen ben ik niet altijd even fris meer zo op het einde van de vrijdag middag :)

Ryzen 9 9950X3D ~~ 32GB GSkill TridentZ 6000Mhz ~~ ASRock B850M Steel Legend ~~ Powercolor Hellhound RX9070XT

Pagina: 1