Mer om detta ämne Google-sökning på VB Initproperties
property already has an Initialize event in common with Class modules and other objects, such as forms. Du kanske undrar varför vi behöver InitProperties händelse eftersom UserControl egendom redan har ett Initiera fall gemensamt med klass moduler och andra föremål, såsom blanketter.
event happens too often, that is, every time an instance or your control "wakes up." Anledningen till att vi behöver InitProperties att initiera standardvärden är att starta händelse inträffar alltför ofta, det vill säga varje gång en hand eller din kontroll "vaknar upp". Du vill bara ha den standard värden som krävs för när utvecklarna första Lägg till en ny kopia av din kontroll på en container. Efter att du vill att utvecklare ska kunna definiera bestående värden.
event, then you will have some very frustrated developers on your hands. VARNING - Använd inte Initiera Event till Ställ en ActiveX-kontroll förvalda värden: Om du sätter koden för att initiera objekt till standard i din anpassade ActiveX-kontroller: s Initiera händelse i stället för i InitProperties fall kommer du har några mycket frustrerade utvecklare på händerna. Din standardvärden åsidosätter de värden som exploatören har tilldelats vid utformning tid varje gång exploatören kör ett program som använder din kontroll.
--
object containing the values of your control’s custom, extender, and delegated properties. Fastigheten Bag är en ihållande UserControl föremål som innehåller värden av din kontroll anpassade, extender, och delegerade egenskaper. This means you can store property values in the Property Bag just before an instance of the UserControl is destroyed and then retrieve the stored values when a new instance of the UserControl "wakes up" in another part of the development life cycle. Faktum är att Fastighetsförmedling Bag är så ihållande att det inte får förstöras med instanser av UserControl. Det innebär att du kan lagra värden i Fastighetsförmedling Bag strax före en instans av UserControl förstörs och sedan hämta den lagrade värden när en ny instans av UserControl "vaknar upp" i en annan del av utvecklingen livscykel.
Fastigheten Bag har två metoder för att lagra och hämta värden respektive:
Den WriteProperty metod
Den ReadProperty metod
Du måste veta hur man kan manipulera Fastighetsförmedling väska i följande situationer som vi diskuterar i de avsnitt som följer på denna:
method in the WriteProperties event procedure. Du lagra värden i PropertyBag genom att ringa dess WriteProperty metod i WriteProperties händelse förfarande.
method in the ReadProperties event procedure. Du hämtar värden från PropertyBag genom att ringa dess ReadProperty metod i ReadProperties händelse förfarande.
method. Du se till att WriteProperties händelse kommer brand genom att ringa PropertyChanged metod. Du brukar göra detta i Fastighetsförmedling Låt förfaranden för dina egna egenskaper eller på andra lämpliga platser i din kod där lagringen värdet av en fastighet förändringar.
--
and WriteProperties events whenever it thinks that the instantiated object’s properties need to be re-initialized ( ReadProperties event fires) or stored for safekeeping ( WriteProperties event fires). Verksamhetsmiljön bränder en UserControl är ReadProperties och WriteProperties händelser när det anser att instantiated objektets egenskaper på nytt måste initieras (ReadProperties händelse bränder) eller lagras för förvaring (WriteProperties händelse bränder).
Detta arrangemang gör det mycket lättare för dig, kontroll författare, för att hantera dessa egenskaper eftersom du inte behöver tänka på alla möjliga tillfällen då värden kan behöva läsa eller skriva. event procedures. Du behöver helt enkelt att sätta kod för att läsa och skriva värden i två centrala platser: den ReadProperties och WriteProperties händelse förfaranden.
event procedures receive a single parameter named PropBag. This PropBag parameter obviously represents the Property Bag object that holds the UserControl ’s property values. Både ReadProperties och WriteProperties händelseprocedurer få en enda parameter som heter PropBag. Detta PropBag parameter uppenbarligen representerar Fastighetsförmedling Bag objekt som innehar den UserControl är värden.
parameter has one method for reading properties (ReadProperty) and another for writing properties (WriteProperty). Den PropertyBag objekt representeras av PropBag parameter har en metod för att läsa objekt (ReadProperty) och en annan för att skriva objekt (WriteProperty).
method so you can retrieve persistent values for individual properties. Vanligtvis är det enda nummer du behöver för att kunna skriva i ReadProperties händelse kommer att vara en serie samtal till ReadProperty metod så att du kan hämta bestående värden för enskilda fastigheter.
method so you can store persistent values of individual properties. Omvänt är det enda nummer du oftast behöver för att kunna skriva i WriteProperties händelse kommer att vara en serie samtal till WriteProperty metod så att du kan lagra beständiga värden av enskilda fastigheter.
--
event just before it fires the UserControl’ s Terminate event provided that at least one property value has changed. Visual Basic bränder den UserControl är WriteProperties händelse strax före det bränder den UserControl är Terminate händelse under förutsättning att minst ett fastighetsvärde har förändrats. Med andra ord, WriteProperties händelse bränder när den nuvarande instans av kontrollen är på väg att förstöras och alla värden som du vill kvar förändrats och därför behöver sparas.
Som namnet antyder kommer du använder WriteProperties händelse för att spara bestående värden. for each property whose value you wish to save. Den specifika mekanism som du använder för att spara värden är att ringa WriteProperty metod för Fastighetsförmedling Bag för varje objekt vars värde du vill spara. event as a parameter named PropBag. The example code in Listing 13.7 shows how you would call the Property Bag ’s WriteProperty method to save individual property values. Fastigheten Bag finns tillgänglig i händelse förfarande av WriteProperties händelse som en parameter vid namn PropBag. Exemplet koden i Lista 13.7 visar hur du skulle ringa Fastighetsförmedling Bag är WriteProperty metod för att spara enskilda värden. Observera att vi använder oavsett arkiv har lagring av egendom värde som källa för det aktuella värdet: ibland kan detta vara en privat minne rörlig, och vid andra tillfällen kan det vara en egenskap hos en konstituerande kontroll (som i sista raden innan den End Sub).
Med hjälp av WRITEPROPERTIES händelse förfarande för att rädda värden till egendom väska
Private Sub UserControl_WriteProperties (PropBag Som PropertyBag) "-Store värdena för de egna egenskaper till Fastighetsförmedling Bag
PropBag.WriteProperty "bakgrundsfärg", bakgrundsfärg
PropBag.WriteProperty "Celsius", m_Celsius
PropBag.WriteProperty "Fahrenheit", m_Fahrenheit
PropBag.WriteProperty "TemperatureDate", m_TemperatureDate
PropBag.WriteProperty "Caption", lblCaption.Caption
End Sub
--
events whenever it thinks you may need their services. Systemet automatiskt bränder den WriteProperties och ReadProperties händelser när den tror att du kan behöva deras tjänster. Att säkerställa att systemet känner en fastighet har förändrats, du måste ringa PropertyChanged metod. Ett exempel på detta skulle vara när du ändrar värdet på en privat variabel som omsätter värdet av en fastighet. Systemet kommer att ha någon möjlighet att veta att denna variabel är ansluten med en egendom, och därför kommer det inte att avskeda WriteProperties händelse som enbart grundar sig på de förändringar du har gjort.
I sådana fall kan du ringa PropertyChanged metod. Denna metod meddelar systemet att en viss egendom har förändrats och därför ser till att WriteProperties händelse kommer att branden innan den nuvarande instans av kontroll förstörs. Om du har skrivit rätt postnummer i WriteProperties xvent, sedan dina värden kommer att lagras i Fastighetsförmedling Bag.
method whenever you do something in code that will cause a change to a property whose value you wish to persist. Ring UserControl är PropertyChanged metod när du göra något i koden som kommer att orsaka en förändring till ett objekt vars värde du vill kvarstår. or Property Set procedure. Det mest typiska platsen för dig att ringa PropertyChanged metod skulle vara i en fastighet Låt eller egendom fastställt förfarande. Observera att vi kontrollera CanPropertyChange metod som vi diskuterar i "Ringer CanPropertyChange metod innan man tillåter en Fastighetsförmedling Värde för förändringar."
Ringer PropertyChanged metod för att säkerställa att WRITEPROPERTIES kommer brand
Fastighetsförmedling Låt Celsius (sValue Som Single)
Om CanPropertyChange ( "Celsius") Then '-tilldela inkommande värde som skall lagras i Privata variabel
m_Celsius = sValue
PropertyChanged ( "Celsius") "-åberopa UserControl: s PropertyChanged metod så att man vet att utlösa WriteProperties och lagra nytt värde
Slider1.Value = m_Celsius "-utföra andra hushållning är specifika för denna ansökan
RecalcFahrenheitFromCelsius sValue
DisplayTempsFromSlider
End If
Slutet Fastighetsförmedling
--
Den ReadProperties händelse bränder när en anpassad kontroll är reinstantiated någon gång i utvecklingscykel (projektet där det är bosatt har hämtats och dess behållare har instantiated, exploatören har just satt in körläge från design-läge, eller exploatören har bara återlämnas till design-läge från körläge).
Observera att vi sagt att ReadProperties bränder när den anpassade kontroll är nytt instantiated. event doesn’t fire. Vi använde denna formulering att avsiktligt utesluta fallet när exploatören lägger en instans av kontroll på dess behållare för första gången från Toolbox. För sådana första gången exemplifiering, den ReadProperties fall inte brand. Istället har InitProperties händelse bränder (se "Använda InitProperties Event Ange standardalternativ Startlista värden"). The Property Bag appears in the ReadProperties event procedure as a parameter named PropBag. You call PropBag’ s ReadProperty method for each property whose value you wish to restore. Den ReadProperties händelse, som namnet antyder, är den händelse som du kommer att använda för att återställa värdena på fastigheter som har hållits i Fastighetsförmedling Bag. Fastigheten Bag visas i ReadProperties händelse förfarande som en parameter vid namn PropBag. Kallar du PropBag " S ReadProperty metod för varje objekt vars värde du vill återställa.
. Observera att ReadProperty metod tar två argument: Namnet på den egendom som en sträng och sedan ett standardvärde för egendom (om egendomens värde inte har initierats i Fastighetsförmedling Bag).
Vi lagrar resultaten av varje ansökningsomgång till ReadProperties i lämplig variabel eller kontroll egendom som omsätter egendom inom denna kontroll.
Med hjälp av READPROPERTIES händelse förfarande för att återställa bestående värden från fastigheten väska
Private Sub UserControl_ReadProperties (PropBag som PropertyBag)
m_Celsius = PropBag.ReadProperty ( "Celsius", 30)
m_TemperatureDate = PropBag.ReadProperty _
( "TemperatureDate", DateSerial (1997, 1, 1))
m_caption = PropBag.ReadProperty ( "Caption", Extender.Name)
Bakgrundsfärg = PropBag.ReadProperty ( "bakgrundsfärg", Ambient.BackColor)
lblCaption.Caption = m_caption
End Sub
--