2017-05-05 4 views
1

Ich habe für meine Anforderungen und ermöglichen Schatten mit folgenden Codes subclassed Form,wie Schatten zur Laufzeit deaktivieren?

bool showShadow=true; 

public bool ShowShadow 
{ 
    get{ return showShadow;} 
    set{showShadow= value;} 
} 

protected override CreateParams CreateParams 
{ 
    get 
    {     
     CreateParams value = base.CreateParams; 
     value.ExStyle |= WindowMessages.WS_EX_TOPMOST; 
     if (this.ShowShadow) 
     value.ClassStyle |= WindowMessages.CS_DROPSHADOW; 
     return value; 
    } 
} 

ich die angepasste Form nur durch folgenden Code, indem einzelne Instanz gezeigt haben,

MyForm myform= new MyForm(); 
myForm.Visible= true; 

und ausgeblendete es durch myform .Visible = falsch;

und i deaktiviert den Schatten für das Formular, aber der Schatten wird gezeichnet, da CreateParams nicht mit deaktiviertem Schatten aktualisiert wird.

Kann jemand CreateParams für eine einzelne Instanz von Formular aufrufen, während die ShowShadow-Eigenschaft zur Laufzeit geändert wird?

Bitte helfen Sie mir, dies zu lösen.

Antwort

0

Sie müssen P/Invoke mit SetWindowLong, wenn der Wert geändert wird.

+0

Wie Sie SetWindowLong verwenden – Amal