2 つのプロパティを持つカスタム クラスの一般的なリストがあります。これらのプロパティは、フォームと別のフォームの間の関係を保存します。リストは、階層リスト (親子) 関係として構造化されています。私ができるようにしたいのは、関数に渡される親フォーム参照に基づいてすべてのフォームのリストを取得することです。これを行う最善の方法は、再帰的アプローチを使用した LINQ クエリを使用することだと考えています。誰かが私を正しい方向に向けることができると確信しています
これはリストで使用されるクラスです
class FormStack {
#region Declares
private Form _form;
private Form _parent;
#endregion
#region Constructor
static FormStack()
{
}
#endregion
public Form Form
{
get { return _form; }
set { _form = value; }
}
public Form Parent
{
get { return _parent; }
set { _parent = value; }
}
}
したがって、メソッドを呼び出してフォーム参照を関数に渡し、この親に関連するすべての子フォームを取得できるようにしたいと考えています。
これは私がつまずいたコードの一部です
// create a lookup list
var list = formStack.ToLookup( p => object.ReferenceEquals( p.Parent, parent ) );
// create a function
Func<IEnumerable<Form>, IEnumerable<Form>> recurse = null;
recurse = qs =>
{
return
qs
.Concat(
from q in qs
from q2 in recurse( list[] )
select q2 );
};
// filter the list
var children = recurse( list[parent] ).ToList();
標準の CRUD 機能を備えた winform アプリケーションがあります。顧客のリストがあり、各顧客が複数の住所を持つことができ、これらの住所のそれぞれに複数の建物があるとしましょう。フォームを構造化した方法では、顧客のリストがあり、このリストから詳細フォームを開くことができます特定の顧客。このフォームには、顧客の詳細とリスト内のすべてのアドレスが含まれています。このリストにより、ユーザーはリスト内の住所を選択し、建物などのリストを含む住所詳細フォームを開くことができます。私の問題は、この顧客の詳細と関連するすべてのフォームを閉じたいことです。 . 私の考えは、フォーム間の関係を維持することでしたが、もっと良い方法があるのではないでしょうか???