Hej, Varför skriver du inte bara properties? hmm... detta är i VB6, om det hade varit .NET hade jag skrivit i VB.NET forumet... Ops, sorry! Jag tror felet ligger i att du tilldelar strCaption värdet Extender.Name i UserControl_InitProperties. Det hela uppstår när du kör ditt program? Testa sätta en breakpoint där du sparar värdet till PropBag och kontrollera vad strCaption har för värde. Det uppstår när jag kör .exe filen, inte om jag kör det genom VB. Såhär: Har testat lite nu och såg att detta inte inträffar om jag stänger formen innan jag kompilerar. Vad gör PropertyChanged "Caption" för något? Om du vill skulle du kunna skicka ditt projekt till min e-post så kan jag testa och se om jag hittar något fel. PropertyChanged använder man när man vill ta reda på när en enskild egenskap har ändrats. Självklart är det någonstans som värdet ändras till ditt default, det är bara att hitta stället och korrigera det. Tror att jag har kommit på det nu... innan körde jag med kontrollen utan att göra en .ocx, men när jag gjorde det så fungerade det. Bra att du kom på det! Det är lugnt, ligger ändå bara hemma och är arbetslös, eller arbetssökande som det heter men vad ska man söka när det inte finns något?!Problem med egengjord UserControl
Håller på med knappkontroll...
Problemet är att när jag kompilerar så ändras Caption (kvittar vad jag satt det till i design-time) till Extender.Name, namnet på kontrollen alltså.
Såhär har jag lagt koden:
I UserControl_InitProperties() har jag lagt
<code>strCaption = Extender.Name</code>
i UserControl_ReadProperties() har jag
<code>strCaption = PropBag.ReadProperty("Caption", Extender.Name)</code>
och i UserControl_WriteProperties() har jag
<code>Call PropBag.WriteProperty("Caption", strCaption, Extender.Name)</code>
Jag har sett dett här i flera andra kontroller också.
Någon som kan?
/MickeSv: Problem med egengjord UserControl
Till exempel:
<code>
Public Class MinKontroll
Inherits System.Windows.Forms.UserControl
Private _Caption As String = MyBase.Name
Public Property Caption() As String
Get
Return _Caption
End Get
Set(ByVal Value As String)
_Caption = Value
End Set
End Property
End Class
</code>
Jag vet att i VB6 fick man skriva sina egna rutiner för att spara och hämta värden i UserControls men i .NET sköter ju det sig själv...
Mvh,
Thomas VanhaniemiSv: Problem med egengjord UserControl
/MickeSv: Problem med egengjord UserControl
Var inne i helt egna tankar just :)
Har dock själv gjort det i VB6 en gång i tiden, tyvärr kommer jag inte ihåg hur just nu men jag kan kolla upp det...
Mvh,
ThomasSv: Problem med egengjord UserControl
Tror UserControl_InitProperties körs efter UserControl_ReadProperties vilket resulterar i att värdet som har hämtats från det sparade skrivs över med ditt default...
Testa ta bort hela UserControl_InitProperties...
Annars ser jag inget fel...
Mvh,
ThomasSv: Problem med egengjord UserControl
Har du fler UserControl Events som startar samtidigt som du kör programmet?
strCaption är väl en global variabel i kontrollen?
Mvh,
ThomasSv: Problem med egengjord UserControl
Hur ser din Property ut för att sätta Caption ut?
Mvh,
ThomasSv: Problem med egengjord UserControl
Precis när det är kompilerat så uppdateras hela projektet och då står det "Button1", som kontrollen heter, istället för det jag skrev i design-time.
De Events som startas är väl InitProperties(), WriteProperties(), och ReadProperties().
Ja, strCaption är en global variabel.
/MickeSv: Problem med egengjord UserControl
<code>
Public Property Get Caption() As String
On Error Resume Next
Caption = strCaption
End Property
Public Property Let Caption(ByVal New_Caption As String)
On Error Resume Next
strCaption = New_Caption
PropertyChanged "Caption"
Call Refresh 'Kallar en rutin för att rita ut texten
End Property
</code>
/MickeSv: Problem med egengjord UserControl
Så nu vet jag hur jag kan komma runt det, men skulle gärna vilja veta hur man löser det.
/MickeSv: Problem med egengjord UserControl
Om jag minns rätt behöver man inte kalla på något speciellt för att spara värdena för det sker automatiskt...
Har du testat sätta en breakpoint på PropBag och undersöka vad strCaption har för värde?
Mvh,
ThomasSv: Problem med egengjord UserControl
Det är svårt att hjälpa när man inte vet hur helheten ser ut.
Skicka till thomas@eurocitynet.nu så ska jag ta en titt...
Mvh,
ThomasSv: Problem med egengjord UserControl
strCaption är ju det värde som skrivs ut på knappen, det är det som ändras någonstans, kan bara inte komma på var...
Och det händer tydligen bara när man kompilerar _och_ om formen är synlig när man gör det.
/MickeSv: Problem med egengjord UserControl
Det kan man göra genom att stega igenom koden när man kör och då ser man var värden sätts och vad de får för värden samt vad som anropas när etc...
Mvh,
ThomasSv: Problem med egengjord UserControl
/MickeSv: Problem med egengjord UserControl
Som sagt, svårt att säga något "rätt" när man inte vet hur det ser ut hos dig...
God fortsättning!
Mvh,
ThomasSv: Problem med egengjord UserControl
Mvh,
Thomas