ページ 1 / 1
visual Studioのデザイナ使用でメインのフォームクラスの分割
Posted: 2014年3月17日(月) 17:26
by derok
visual Studio2012でフォームアプリケーションを作っているのですが、
デザイナを使用するとメインのForm1クラスがもの凄い大きさになります。
partical修飾子を使用しても、実際にそれぞれのコントロールを操作するクラスにForm1そのものを渡さなければいけず、
関係のないコントロールを操作可能になってしまいます。
できればPanelなどを継承して、それぞれのクラスが管理するコントロールだけを見れる状態にしたいのですが、
この方法でデザイナを使用する方法がよく分かりません。
何か方法はありませんか?
Re: visual Studioのデザイナ使用でメインのフォームクラスの分割
Posted: 2014年3月18日(火) 00:07
by YuO
コントロールが多くなる場合,基本的にはPanelではなくユーザーコントロールを使います。
Formの上にTableLayoutPanel貼って,そこに作成したユーザーコントロールを配置していくのがWinFormsでのプログラムの基本です。
で,ユーザーコントロールが自身が保持するコントロール以外を操作する必要があるのであれば,そもそもコントロールの配置が間違っている,と考えた方がよいです。
ユーザーコントロールに実装したイベントをその親が拾って,別のコントロールのプロパティを設定する,などによって,ちゃんと分離ができるはずです。
さらに書くなら,Modelを用意して,状態をコントロールではなくModelに問い合わせるようにすれば,他のコントロールを操作する必要は無いです。
# ViewModel的なものが必要になる場合もありますが。
INotifyPropertyChangedとデータバインドを使うと色々楽ができることもあります。
Re: visual Studioのデザイナ使用でメインのフォームクラスの分割
Posted: 2014年3月19日(水) 21:04
by derok
返答おくれて申し訳ございません。
ユーザーコントロールというものがあるんですね。初めて知りました。
これのおかげでやりたいことが出来そうです。
YuO さんが書きました:
さらに書くなら,Modelを用意して,状態をコントロールではなくModelに問い合わせるようにすれば,他のコントロールを操作する必要は無いです。
# ViewModel的なものが必要になる場合もありますが。
INotifyPropertyChangedとデータバインドを使うと色々楽ができることもあります。
いろいろと調べてみたのですが、今のところデータ関係はさほど面倒でないことと、
すこしややこしそうなので、とりあえずは保留にしたいと思います。
いろいろとアドバイスありがとうございました。