[seasar-dotnet:1806] [S2Container]ユーザコントロール利用時の問題について

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2010年 9月 23日 (木) 10:11:18 JST


uparrowと申します。

いままで、S2Container.NET 1.3.17を利用しておりました。
たくさんのコントロールを利用しているフォームがあったため、速度改善のため
1.3.18で動作の検証を行ってみました。

そうしたところ、実行時に以下のような例外が発生し
そのままでは正しく動作しませんでした。

System.ArgumentException: 同一のキーを含む項目が既に追加されています。
   場所 System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   場所 System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   場所 System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   場所 Seasar.Windows.S2Form._GetAllControls(Control controls, IDictionary`2 table)
   場所 Seasar.Windows.S2Form._GetAllControls(Control controls, IDictionary`2 table)
   場所 Seasar.Windows.S2Form._SetDataToControls()
   場所 Seasar.Windows.S2Form.set_DataSource(Object value)
......

どうやら同一のユーザコントロールを複数使用している場合このエラーが発生するようでした。

コードと名称をユーザコントロールに貼り付け、このコントロールを
同一フォームに2つ以上貼り付けている箇所がいくつかあります。
例えば、txtServiceCode と txtServiceName のテキストボックスを
ユーザコントロールServiceControlとして作成しておき、
フォームにserviceControl1とserviceControl2の同じユーザコントロールを複数貼る場合です。

このような場合はどのように対応するのが良いのでしょうか。
ユーザコントロールを使わず、フォームにコントロールを直接置けば
何も問題ないのですが、いろいろとユーザコントロールに作り込んでいるので、
できれば、ユーザコントロールを利用して対応可能な方法があればよいなと思います。

よろしくお願いいたします。



seasar-dotnet メーリングリストの案内