visual Studioのデザイナ使用でメインのフォームクラスの分割

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
derok
記事: 51
登録日時: 12年前

visual Studioのデザイナ使用でメインのフォームクラスの分割

#1

投稿記事 by derok » 11年前

visual Studio2012でフォームアプリケーションを作っているのですが、
デザイナを使用するとメインのForm1クラスがもの凄い大きさになります。
partical修飾子を使用しても、実際にそれぞれのコントロールを操作するクラスにForm1そのものを渡さなければいけず、
関係のないコントロールを操作可能になってしまいます。
できればPanelなどを継承して、それぞれのクラスが管理するコントロールだけを見れる状態にしたいのですが、
この方法でデザイナを使用する方法がよく分かりません。
何か方法はありませんか?

YuO
記事: 947
登録日時: 15年前
住所: 東京都世田谷区

Re: visual Studioのデザイナ使用でメインのフォームクラスの分割

#2

投稿記事 by YuO » 11年前

コントロールが多くなる場合,基本的にはPanelではなくユーザーコントロールを使います。
Formの上にTableLayoutPanel貼って,そこに作成したユーザーコントロールを配置していくのがWinFormsでのプログラムの基本です。

で,ユーザーコントロールが自身が保持するコントロール以外を操作する必要があるのであれば,そもそもコントロールの配置が間違っている,と考えた方がよいです。
ユーザーコントロールに実装したイベントをその親が拾って,別のコントロールのプロパティを設定する,などによって,ちゃんと分離ができるはずです。

さらに書くなら,Modelを用意して,状態をコントロールではなくModelに問い合わせるようにすれば,他のコントロールを操作する必要は無いです。
# ViewModel的なものが必要になる場合もありますが。
INotifyPropertyChangedとデータバインドを使うと色々楽ができることもあります。

derok
記事: 51
登録日時: 12年前

Re: visual Studioのデザイナ使用でメインのフォームクラスの分割

#3

投稿記事 by derok » 11年前

返答おくれて申し訳ございません。
ユーザーコントロールというものがあるんですね。初めて知りました。
これのおかげでやりたいことが出来そうです。
YuO さんが書きました: さらに書くなら,Modelを用意して,状態をコントロールではなくModelに問い合わせるようにすれば,他のコントロールを操作する必要は無いです。
# ViewModel的なものが必要になる場合もありますが。
INotifyPropertyChangedとデータバインドを使うと色々楽ができることもあります。
いろいろと調べてみたのですが、今のところデータ関係はさほど面倒でないことと、
すこしややこしそうなので、とりあえずは保留にしたいと思います。

いろいろとアドバイスありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る