Propという名前のブール値プロパティを実装するFormからCustomFormを継承しています。使用するフォームはCustomFormから継承します。このプロパティは、フォームにいくつかの描画と変更 (有効な場合) を行います。ただし、これは正常に機能していません。設計された 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
私の場合、EnableSkin を True に設定し、それを False に戻してから FormBorderStyle を変更すると、上記のリンクで確認できる問題が発生します。記事で述べたように、VS を管理者として実行している場合、問題は発生しません。
そのため、VS IDE デザイナーを更新する方法を探しています。つまり、その記事を見つけたので、ソリューションを再構築するときと同じように、ウィンドウを再作成する必要があります。
基本フォームでプロパティを宣言するにはどうすればよいですか?
私は現在持っています:
public class MyForm : Form { }
そして、フォーム内ではなく、そのクラス内でのみプロパティを宣言できます...最初の投稿で述べたように、Invalidate() も使用しましたが、問題は解決しません。