I have 定制表格继承自Form它实现了一个名为的布尔属性Prop。我将使用的表单将继承自定制表格。此属性将对表单进行一些绘制和更改(如果已启用)。但是,这并没有按预期工作,设计的 VS IDE 没有刷新以显示更改。但是,如果我按 Ctrl+Shift+B(菜单:构建 » 构建解决方案),VS IDE 将刷新,表单设计器甚至会瞬间消失,并会根据应用的新更改重新绘制自身。
那么,有没有一种方法,通过代码,强制 VS IDE 设计器刷新自身,就像我构建解决方案时发生的那样?如果是这样,我可以将该代码添加到Prop设置访问器,我的问题就消失了。
请注意,我尝试调用 Invalidate()、Refresh() 和 Update。但他们似乎都没有解决这个问题......
这是对我的实际问题的一些见解。我的代码是这样的:
internal class MyForm : Form {
private FormBorderStyle formBorderStyle;
private bool enableSkin;
[DefaultValue(false)]
public bool EnableSkin {
get {
return enableSkin;
} set {
enableSkin = value;
if(enableSkin) {
BackColor = Color.Lime;
MaximizedBounds = Screen.GetWorkingArea(this);
TransparencyKey = Color.Lime;
base.FormBorderStyle = FormBorderStyle.None;
} else {
BackColor = SystemColors.Control;
MaximizedBounds = Rectangle.Empty;
TransparencyKey = Color.Empty;
base.FormBorderStyle = FormBorderStyle;
}
}
}
[DefaultValue(FormBorderStyle.Sizable)]
public new FormBorderStyle FormBorderStyle {
get {
return formBorderStyle;
} set {
formBorderStyle = value;
if(EnableSkin) {
base.FormBorderStyle = FormBorderStyle.None;
} else {
base.FormBorderStyle = formBorderStyle;
}
}
}
internal MyForm() {
EnableSkin = false;
FormBorderStyle = FormBorderStyle.Sizable;
}
}
我遇到的问题是这样的:http://blogs.msdn.com/calvin_hsia/archive/2007/05/01/windows-vista-aero-borderstyle-paint-problem-as-non-administrator.aspx http://blogs.msdn.com/calvin_hsia/archive/2007/05/01/windows-vista-aero-borderstyle-paint-problem-as-non-administrator.aspx
就我而言,当您将 EnableSkin 设置为 True,将其更改回 False,然后更改 FormBorderStyle 将导致您在上面的链接中看到的问题时,就会发生这种情况。正如文章中所述,以管理员身份运行 VS 时不会出现该问题。
这就是为什么我正在寻找一种方法来刷新 VS IDE 设计器。换句话说,既然我找到了那篇文章,我需要重新创建窗口,就像重建解决方案时发生的情况一样。
如何在基本表格中申报财产?
我目前有:
public class MyForm : Form { }
而且我只能在该类中声明属性,而不能在 Form one 中声明属性...我也使用了 Invalidate() 正如我在第一篇文章中所说的那样,但这并不能解决我的问题。