问题是如何使其失效/刷新VS IDE设计师C#?
-
11-07-2019 - |
题
我 CustomForm 继承了 形式 它实现了一个布尔酒店命名 道具.在形式,我将利用会继承 CustomForm.这个酒店会做一些绘画和变化(如果它的启用)的形式。然而,这并不是工作,因为它应该,VS IDE设计是不是刷新,以显示的变化。但是,如果我按Ctrl+Shift+B(菜单:建立"建立解决方案)VS IDE将会刷新,在形成的设计师会甚至消失于一瞬间,将重新绘制本身的新的更改应用。
因此,有没有一种方法,通过代码,以迫VS IDE设计师刷新本身只是喜欢它发生时,我建立的解决办法?如果是这样,我可以添加这代码 道具 设置访问和我的问题就消失了。
注意,我已经试过叫失效()、刷新()并更新。但他们没有看到解决问题...
这里有一个小洞察力对我真正的问题。我的代码是这样的:
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
在我的情况下,这种情况发生时设置的EnableSkin到真实的,它改回来假和随后,改变FormBorderStyle会造成问题,你可以看到上面的链接。如在文章中指出,问题不是发生在运行VS作为管理员。
这就是为什么我在寻找一种方法刷新VS IDE设计师。换句话说,现在我找到了那篇文章,我需要重新创建的窗口,就像它发生时的解决方案是重建。
怎么我宣布一个酒店中的基本形式?
我目前有:
public class MyForm : Form { }
我可能只有宣告性质内这类中,没有内部形成一个...我还使用无效()正如我所说的在后的第一个,但它不能解决我的问题。
解决方案
别人帮了我,并解决问题。我只需要调用的 ReCreateHandle()强>当用户设置的 EnableSkin 以假。问题解决:)
谢谢大家虽然:)
其他提示
所有你需要做的就是这个属性添加到您的属性:
[Description("Description of your property."), NotifyParentProperty(true),
RefreshProperties(RefreshProperties.Repaint)]
这将导致IDE当该值改变为重绘。
据我所知绘画程序的IDE并不反映如果就表明做画的对象。举例来说,如果你的基本形式做一些画,继承表明,...但如果你开基的形式,它不显示的涂装结果。
我认为,如果你需要查看改变你的孩子形式财产的结果,物业应该在基地的形式申报,并做画这种形式。
顺便说一句......在物业身体,你应该叫this.Invalidate()
以刷新绘画。
希望帮助!