16

私はやや複雑なUserControlを持っています.Visual Studio 2008はそれを扱う際には害を与えません。デザイナーが設定した無害な値のいくつかを直ちに変更することを決めます。つまりサイズのプロパティの初期化です。これらの変更を保存して閉じると再オープンすると、ほとんどの場合、コントロールの最初のサイズが無限に変更される必要がある別のコンポーネントを決定することになります。幸運にも、私はどこでも自動サイジングを使用しているので、これらの変更は無害ですが、これは非常に面倒です。私は何がうまくいかないのか分かり始めていないのですが、私の唯一の考えは、デザイナーがコントロールを開くたびに初期サイズのフィールドに自動サイズ変更の結果を割り当てることです。原因/修正に関するアイデアはありますか?Visual Studio Designerは常に自分のコントロールを変更しようとしています

編集:また、私は、アプリケーションの実行間で一定のサイズ変更可能な子コンポーネントのサイズを保存するアプリケーション設定を使用していますが、私は本当にデザイナーはそれだけで、これまでデフォルトを使用しなければならないことを理解するのに十分スマートであると思います。

+0

私はこれも完全に手に入ります。本当に刺激的なので、毎回ソース管理のために私にプロンプ​​トを表示し、しばらくの間、変化を壊してしまいます。 – GWLlosa

+2

カスタムコントロール内の子コントロールのサイズを変更しているVisual Studio 2012でも同じ問題が発生しています。あなたのために働いた解決策の言葉? – almostProgramming

答えて

5

あなたが正しいです、デザイナーはプロパティにデフォルト値を追加しようとします。

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 

このプロパティを無視するデザイナーを教えてくれます:

は、プロパティ宣言の上にこれを追加します。

+0

コントロールから継承され、非バーチャル(よく、再宣言せずに、基底クラスにパイプしない、ばかげている)ので、Sizeプロパティではできません。また、私は主にすぐに使用できるコンポーネントを使用しているので、これらのすべてを自分のカスタム派生クラスに変更する必要があります。 –

+0

Sizeプロパティを "newing"せずにコントロールする方法がわかりません。 – Benjol

1

多少類似した問題があります。私は継承し、派生クラスのルックアンドフィールを変更したいユーザーコントロールでInfragistics GroupBoxを使用しています。私はそれをベースクラスで保護されている - それは私が派生クラスのプロパティを変更することができます。しかしそれはそれを保存しません。私がそれを開くたびに、私はベースクラスの古い値を戻します。

編集:私はそれを理解しました。

上記の答えのいずれかについてさまざまな値を試してみてください。 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]の代わりに[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]を使用すると、変更されたプロパティのコードが生成されます。

0

コントロールのDefaultSizeプロパティをオーバーライドしてみてください。

MSDNより: DefaultSizeプロパティは、コントロールの初期作成時のサイズを表します。

+0

サイズが変更されているのは自分のコントロールではなく、サイズが変更されるのはすべての子コントロールです。 –

8

おそらくそれは助けることができます:
FormDesigner(WPFなし、Webなど)は、カスタムUserControlを挿入すると奇妙な動作をすることに気付きました。
他のコントロール(GroupBox、EditBox、ComboBox)のサイズがランダムに変更されています。
サイズを変更するように選択されたコントロールはランダムなようですが、vs2010を再起動すると、常に同じになります。削除して再挿入した場合、デザイナーはランダムにサイズを変更する別のコントロールを選択します...

私のUserControlのAutoScaleModeプロパティを "Font"から "Inherit"に変更しました。

+0

はい、正確です。多分私は明確に指定しなかったでしょう。 私はWPFもWebDesignerも使用していません –

+0

申し訳ありませんが、私はあなたがWPFについて回答したと思った理由を知りません。 –

+1

AutoScaleModeが助けました。私の場合はこれを[なし]に設定してください。 – transistor1

関連する問題