2012/10/11(Thu) 16:40:06 編集(投稿者)
こんにちわ。質問がうまく読めないので、以下のように解釈しますね。
ニホンゴムズカシイ…。
Form上に何かしらの値が変更できるメニューを置き、
そのメニューの値が変更された場合に、
メニューの値に応じたUserControlを表示する。
この別々のUserControl間でデータの受け渡しを行いたいが、
どうすれば良いか。
私なら…なんですが。
Form上にあるメニューからは当然各UserControlにアクセスできると思います。
この「各UserControl」というのは、全て自分でUserControlクラスを継承した自作クラスです。
それぞれの自作クラスのコンストラクタに、
「他の自作クラスへアクセス可能なインスタンス(例えばメニューのインスタンス)」を渡し、
他の自作クラスへデータの受け渡しを行う際には、
「他の自作クラスへアクセス可能なインスタンス(例えばメニューのインスタンス)」へセットしてもらうようにお願いする、
という形を取ります。
大体以下のような感じです。
Form自体とか、メニュークラス自体とかは省略してしまっているので、
そこは補完してください。
public class MyMenu //: SomeMenuClass //SomeMenuClassは何かしらの値が変更できるメニュークラス
{
private UserControlType m_eNowSelectType = UserControlType::TYPE_USERCONTROL_NONE;
private ArrayList m_arrayUserControl = new ArrayList(); //取り扱う全てのユーザーコントロールを格納
public enum UserControlType
{
TYPE_USERCONTROL_MY,
///他にもユーザーコントロールの種類を入れる
TYPE_USERCONTROL_NONE,
}
public MyMenu()
{
//base.SomeMenuClass();
}
//このクラスが管理している他のユーザーコントロールに対してデータをセットするメソッド
public void SetData(UserControlType eType, object objSetData)
{
switch(eType)
{
//ユーザーコントロールの種類に応じたなんらかの処理
}
}
//ユーザーが他のUserControlを表示するように指示した場合に呼ばれるメソッド(Setプロパティで十分かも)
public void SelectUserControlType(UserControlType eType)
{
//表示済みのUserControlを消して、設定したUserControlを表示するとか
}
}
public class MyUserControl : UserControl
{
private MyMenu m_clsMenu = null;
public MyUserControl(MyMenu clsMenu)
{
m_clsMenu = clsMenu;
//base.UserControl();
}
//とりあえずint型のデータをセットしてみるメソッド
public SetParamToOtherControl(MyMenu::UserControlType eType, int iData)
{
m_clsMenu.SetData(eType, iData);
}
}
いかがでしょうか。