Ungefär som det står i rubriken. Kan man kolla i vilket läge en kontroll man har gjort körs i för tillfället? Är det ingen som vet? if(this.DesignMode) Den ger False hela tiden. Jag förklarade kanske inte tillräckligt bra, det jag menade var hur man kollar om kontrollen körs i VS.NET eller om den körs av ett separat program. Dvs, om det används under utveckling eller om den används i det slutgiltiga programmet. menar du inte om den är skapad i design läge eller om den är skapad generiskt i runtime? Jag tror inte att vi menar samma sak. Det jag vill veta är som sagt om kontrollen används i VS.NET eller om den används i ett färdigt program. detta vart lite tokigt....... dubbelpost *skäms* Jag fattar fortfarande inte riktigt vad du vill göra... Det jag ska använda det till är för att göra en licenskontroll om den används i utveckling. Är det någon som kör ett program där kontrollen används så ska givetvis ingen licens behövas. Med nedstående funktion kan du kolla om vederbörande har Visual Studio igång då han nyttjar din Komponent. Det känns inte som nån vidare bra lösning... om man använder det färdiga programmet (som inte ska behöva licens) och samtidigt kodar nått i VS.NET, då kommer licensen att behövas ändå... Jag misstänker att jag har klantat till det här lite... jag har gjort en sub i min component som skickar upp Msgbox Me.DesignMode och sen kallar jag på den från mitt testprogram. Ingen som har nått svar? Thomas, Ok nu använde du en massa termer som jag inte har nån aning om vad det är =) Återkommer imorgon.. har inte haft tid idag =) Jag väntar med spänning =) Thomas, Hmm ok, ärligt talat så förstår jag inte mycket av det där =) Thomas, Hmm... vad finns det för nackdelar med att ta "min väg" och vad finns det för fördelar med att ta den "långa vägen"? Thomas,Kolla om en user control/component körs i design-time eller run-time
ThomasSv: Kolla om en user control/component körs i design-time eller run-time
ThomasSv:Kolla om en user control/component körs i design-time eller run-time
{
//Designläge
}
else
{
//Inte designläge
}Sv: Kolla om en user control/component körs i design-time eller run-time
ThomasSv:Kolla om en user control/component körs i design-time eller run-time
Sv: Kolla om en user control/component körs i design-time eller run-time
ThomasSv:Kolla om en user control/component körs i design-time eller run-time
Sv:Kolla om en user control/component körs i design-time eller run-time
Bara kontrollen? inte hela applikationen?
I VB6 fanns tydligen nåt liknande test du eventuellt är ute efter.
Handlar det här om Control Arrays, så stöder inte VB.NET det! (sorry)
men du kan testa om VS är igång med
Dim p As Process
For Each p In Process.GetProcesses
....... test om devenv.exe ingår ' om den inte har bytt namn i 2005:an?
next
Tjosan! Sv: Kolla om en user control/component körs i design-time eller run-time
ThomasSv:Kolla om en user control/component körs i design-time eller run-time
Private Function Utveckling()
Dim p As Process
For Each p In Process.GetProcesses
If p.ProcessName = "devenv" Then
Return True
End If
Next
Return False
End FunctionSv: Kolla om en user control/component körs i design-time eller run-time
ThomasSv: Kolla om en user control/component körs i design-time eller run-time
Eftersom programmet körs, oavsett om det är i VS.NET eller som ett separat program, så är det ju trots allt alltid runtime då.
Vart kan jag lägga min kod där jag ska kontrollera om användaren har rätt att använda min kontroll i design-time? Och hur förhindrar jag att den laddas om användaren inte har rätt att använda den?
ThomasSv:Kolla om en user control/component körs i design-time eller run-time
ThomasSv: Kolla om en user control/component körs i design-time eller run-time
Föröker du möjligtvis läsa av DesignMode propertyn i kontruktorn ? Om detta är fallet så kommer det inte att fungera då Site propertyn inte tilldelas din kontroll/komponent förrens efter kontruktorn har exekverats. Ett sätt att komma runt detta är att implementera ISupportInitsialization grässnittet och använda sig av BeginInit metoden för att genomföra kontrollen.
Hoppas det löser sig!Sv:Kolla om en user control/component körs i design-time eller run-time
Jag är en nybörjar på .NET och sitter ofta fast med gamla VB6-termer...
Vad är kontruktorn?
Var hittar jag ISupportInitsialization-gränssnittet?
Kan du visa något enkelt kodexempel så jag har nått att börja gräva i? =)
ThomasSv: Kolla om en user control/component körs i design-time eller run-time
Sv:Kolla om en user control/component körs i design-time eller run-time
ThomasSv: Kolla om en user control/component körs i design-time eller run-time
Ursäkta väntan. En <b>kontruktor</b> är en metod som anropas på din klass när den skapas. Men kan ha en <b>default</b> (standard) kontruktor - den tar inga parametrar.. sen kan man ha kontruktorer som tar olika parametrar. I VB.NET är standardkontruktorn <b>Sub New()</b>.
<b>ISupportInitialize</b> gränssnittet hittar du i <b>System.ComponentModel</b> namnrymden. Om det är så att du försöker kolla <b>DesignMode</b> i en kontruktor på din komponent/kontroll så får du implementera detta gränssnittet på din komponent/kontroll med <b>Implements</b> nyckelordet. Du får då två nya metoder <b>BeginInit</b> och <b>EndInit</b> på din klass.
Du kan läsa mer om gränssnittet här http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemcomponentmodelisupportinitializeclasstopic.asp
Har du fler frågor så säg till.. berätta gärna om det är i en kontruktor som du försöker göra kontrollen av DesignMode egenskapen.Sv:Kolla om en user control/component körs i design-time eller run-time
Jag har dock kommit fram till att jag vill göra det här:
<code>
If Me.DesignMode = True Then
'kontrollera licens
If License = False
Me.Dispose
End If
End If
</code>
Det enda problemet nu är vart jag ska lägga koden? Jag vill ha den i en components motsvarighet till Form_Load typ.
ThomasSv: Kolla om en user control/component körs i design-time eller run-time
Det verkar tyvärr som du försöker hoppa över ett par steg. Att inte förstå grundläggande koncept som kontruktorer, gränssnitt etc och istället försöka implementera licenshantering av komponenter, känns som att försöka ta "den enkla vägen" - sorry men en sådan väg finns inte. ISupportInitialize är det du högst troligen behöver använda i detta fallet och det är inga problem att använda om man har grundläggande kunskaper inom gränssnitt (interface).. finns bra tutorials i .net dokumentationen (som även finns online om du inte har den lokal)Sv:Kolla om en user control/component körs i design-time eller run-time
Jag vill ta hand om licenskontrollen själv så långt som det är möjligt. Kan man göra det även om man använder sig av ISupportInitialize?
ThomasSv: Kolla om en user control/component körs i design-time eller run-time
Tja jag kan inte säga mer (visst skulle jag kunna hålla ett föredrag, men det är inte min uppgift), men att lära sig grunderna av objektorienterad programmering när man utvecklar i en miljö som uteslutande bygger på det konceptet borde tala för sig själv?
Nu kämpar du ett krig på två fronter. Du vill lösa ett problem men stöter på ytterligare ett problem - du förstår inte lösningen för du saknar den grundläggande kunskapen som behövs för att förstå lösningen? Inte nog med att du kör fast, men den utveckling kommer ta bra mycket längre tid då du inte har en aning om hur du skall gå vidare och blir tvungen att förlita dig av hjälp från andra.. hur många dagar sen var det jag la mitt inlägg om kontruktors och ISupportInitialize? Har du löst problemet? Nej, för du förstår inte koncepten som krävs för att lösa det.
Tänker vare sig "tvinga" dig att göra något eller döma dig avsett vad ditt val är, utan delar bara med mig av min åsikt. Det handlar om att lära sig av ANDRAS misstag. Jag vet ingen som börjat med programmering och inte haft drömmen om att skriva världens bästa program, där de flesta inte blivit något för man har gett sig på försvåra saker.
Angående ditt specifika problem så har du ännu inte sagt om det är i kontruktorn som du försöker läsa av DesignMode eller inte, allts kan jag inte säga om ISupportInitialize är lösningen på ditt problem. ISupportInitialize och Licence Management är två helt skiljda koncept och det ena utesluter inte det andra.