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()以刷新绘画。

希望帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top