クラス オブジェクトの GUI を処理するための最良の (読み取り: 最も技術的に正しい) 方法は何ですか?
たとえば、I/O を処理するクラスがあるとします。と呼びましょうclsIO
。ユーザーがこのクラスのさまざまなオプション/プロパティを変更できるようにするフォームもあります。それを と呼びましょうfrmIO
。frmIO
GUI は に固有のものclsIO
であり、アプリケーションの他の場所では使用されません。
私のアプリケーションは常に のインスタンスを作成し、clsIO
デフォルト設定をロードして操作を開始します。frmIO
ユーザーは、構成できるように「設定フォーム」を表示する必要がある場合とない場合があります。
ShowConfigForm()
私には、これを処理する最善の方法は、クラスをインスタンス化するフォームをインスタンス化するのではなく、フォームへのオブジェクト参照をクラス内に格納し、メソッドを提供することです。
これがサウンドデザイン?
編集
このクラスとフォームの組み合わせを複数のプロジェクトで再利用する予定です。私はすでにそれを独自のプロジェクトで開発しているので、それを必要とする他のプロジェクトに簡単に転送/インポートできます。
現在の設計による単純な擬似コード:
class clsIO
{
public bool Active{get;set;}
public int Port{get;set;}
public ShowConfigForm()
{
frmIO settings = new frmIO(this);
settings.Show();
}
}
class frmIO
{
private clsIO _IO;
public frmIO(clsIO IO){_IO = IO;};//constructor
private btnEnable_Click()
{
_IO.Active = true;
//etc etc
}
}
ここでは、 をインスタンス化するだけですclsIO
。その逆ではありません。