문제

나는 가지고있다 CustomForm 상속 형태 이름이 지정된 부울 속성을 구현합니다 소품. 내가 사용하는 양식은 상속 될 것입니다 CustomForm. 이 속성은 일부 그림과 변경 (활성화 된 경우)을 양식으로 수행합니다. 그러나 이것은해야 할대로 작동하지 않으며, VS IDE 설계는 변경 사항을 보여주기 위해 새로 고침되지 않습니다. 그러나 Ctrl+Shift+B (메뉴 : 빌드»빌드 솔루션)를 누르면 vs ide가 새로 고침됩니다. 양식 디자이너는 분할 초간 사라지고 새로운 변경 사항이 적용된 상태에서 스스로를 다시 줄 것입니다.

그렇다면 코드별로 VS IDE 디자이너가 솔루션을 구축 할 때 발생하는 것처럼 스스로 새로 고치도록하는 방법이 있습니까? 그렇다면 해당 코드를 소품 액세서를 설정하고 내 문제가 사라졌습니다.

invalidate (), refresh () 및 업데이트를 호출하려고했습니다. 그러나 그들 중 누구도 문제를 해결하는 것 같지 않았습니다 ...


내 실제 문제에 대한 약간의 통찰력이 있습니다. 내 코드는 다음과 같이됩니다.

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

제 경우에는 활성화를 true로 설정하고 다시 False로 변경 한 다음 FormborderStyle을 변경하면 위의 링크에서 볼 수있는 문제가 발생합니다. 이 기사에서 언급했듯이 관리자로서 실행할 때 문제가 발생하지 않습니다.

그렇기 때문에 VS IDE 디자이너를 새로 고칠 수있는 방법을 찾고 있습니다. 다시 말해, 이제 해당 기사를 찾았으므로 솔루션이 재건 될 때 발생하는 것처럼 창을 재현해야합니다.


기본 형태로 속성을 어떻게 선언합니까?

나는 현재 가지고있다 :

public class MyForm : Form { }

그리고 나는 형식이 아닌 해당 클래스 내부의 속성 만 선언 할 수 있습니다 ... 첫 번째 게시물에서 말했듯이 invalidate ()를 사용했지만 문제를 해결하지 못합니다.

도움이 되었습니까?

해결책

다른 사람이 나를 도와주고 문제를 해결하기 위해 도와주었습니다. 난 그냥 전화 해 RecreateHandle () 사용자가 설정할 때 가죽을 활성화합니다 거짓. 문제 해결됨 :)

그래도 감사합니다 :)

다른 팁

이 속성을 속성에 추가하기 만하면됩니다.

 [Description("Description of your property."), NotifyParentProperty(true),
 RefreshProperties(RefreshProperties.Repaint)]

값이 변경되면 IDE가 다시 칠할 수 있습니다.

내가 아는 한, 그림 루틴은 그림을하는 대상을 보여주고 있다면 IDE에 반영되지 않습니다. 예를 들어, 기본 형태가 그림을 수행하면 상속 된 것은 ... 기본 형태를 열면 그림 결과를 보여주지 않습니다.

자녀 양식에서 속성을 변경 한 결과를 볼 필요가 있다면, 재산은 기본 형태로 선언되어야하며, 그 형태로 그림을 작성해야한다고 생각합니다.

그건 그렇고 ... 부동산 기관에서 당신은 전화해야합니다 this.Invalidate() 그림을 새로 고치기 위해.

도움이되기를 바랍니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top