c# - 问题 如何使 C# 的 VS IDE 设计器失效/刷新?

标签 c# visual-studio-2008 ide refresh designer

我从 Form 继承了 CustomForm,它实现了一个名为 Prop 的 bool 属性。我将使用的表单将从 CustomForm 继承。此属性将对表单进行一些绘制和更改(如果启用)。但是,这并没有正常工作,设计的 VS IDE 没有刷新以显示更改。但是,如果我按 Ctrl+Shift+B(菜单:构建 » 构建解决方案),VS IDE 将刷新,表单设计器甚至会消失一瞬间,并会根据应用的新更改重新绘制自身。

那么,有没有办法通过代码强制 VS IDE 设计器刷新自身,就像我构建解决方案时发生的那样?如果是这样,我可以将该代码添加到 Prop set 访问器,我的问题就消失了。

请注意,我已尝试调用 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

在我的例子中,当您将 EnableSkin 设置为 True,将其更改回 False,然后更改 FormBorderStyle 将导致您在上面的链接中看到的问题。如文章所述,以管理员身份运行 VS 时不会发生此问题。

这就是为什么我正在寻找一种方法来刷新 VS IDE 设计器。换句话说,既然我已经找到那篇文章,我需要重新创建窗口,就像重新构建解决方案时发生的那样。


如何在基本表单中声明属性?

我目前有:

public class MyForm : Form { }

而且我只能在该类中声明属性,而不能在 Form 中声明...我也使用了 Invalidate(),正如我在第一篇文章中所说的,但它并没有解决我的问题。

最佳答案

其他人帮助我解决了问题。当用户将 EnableSkin 设置为 false 时,我只调用 ReCreateHandle()。问题解决:)

谢谢大家:)

关于c# - 问题 如何使 C# 的 VS IDE 设计器失效/刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/316193/

相关文章:

c# - 无法从 C# 调试非托管 Dll

c++ - 如果所包含的对象也继承,如何定义相互继承的容器? (以QObject为基础)

ide - 设置Xamarin Studio以与PCL和MVVMCross一起使用

java - 通过Android手机进行J2me开发

窗口形式的一个窗口的 C# 多个 GUI

c# - 如何在C#中找到一个数的模数

visual-studio - 从 Visual Studio 2008 工具箱中删除控件时添加对项目的引用

c# - 将 List<double> 转换为 LiveCharts.IChartValues

c# - 这可以创建 GTM.js 服务器端逻辑吗?

c++ - 对于 Windows 上的 C++,我应该使用哪个 IDE?