如何在运行时禁用阴影?

时间:2017-05-05 13:57:39

标签: c# windows winforms

我已根据我的要求创建了子表单,并使用以下代码启用了阴影,

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;
   }
}

我只是通过以下代码创建单个实例来展示自定义表单,

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

并通过myform隐藏它.Visible = false;

并且我禁用了窗体的阴影,但阴影正在绘制,因为CreateParams没有使用禁用阴影进行更新。

有谁知道,如何在运行时更改ShowShadow属性时为单个表单实例调用CreateParams?

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

当值发生变化时,您必须使用SetWindowLong进行P / Invoke。