.NETの継承フォームで、Anchorを固定したコントロールの位置がズレる件の対策

2011/12/09追記:Protected にすると継承先でコントロールがロックされないので、用途によってはいまいち。Anchorの利用を諦めて、継承元のOnResizeをOverridesし、コントロールのSizeから表示位置を計算してLocation設定→Invalidateとしたほうがよい場合もある。


サポート情報にも書いてある(http://support.microsoft.com/kb/316560/ja)が、機械翻訳でわかりづらいのでVB.NETを例にメモ。

  1. ソリューションエクスプローラで「すべてのファイルを表示」をクリック。
  2. 継承元フォームのDesigner.vbを開く。
  3. ズレては困るコントロールのメンバをFriendからProtectedに変更する。

つまりButton1であった場合は、

    Friend WithEvents Button1 As System.Windows.Forms.Button

    Protected WithEvents Button1 As System.Windows.Forms.Button

と変更する。これで継承先フォームのサイズを変更しても、コントロール位置がズレなくなる。