Works Order のキャプチャ フォームがCustomerBindingSource
あり、WorksOrderBindingSource
コントロールがあります。ほとんどの編集フィールドは にバインドされておりWorksOrderBindingSource
、リストが にバインドされている ComboBox とCustomerBindingSource
、のフィールドにSelectedValue
バインドされています。これはすべて非常に日常的で標準的なものであり、ここではおかしなことではありません。CustomerId
WorksOrderBindingSource
次に、現在編集中の作業指示書について、現在選択されている顧客のプロパティを表示するために使用するテキスト ボックス フィールドもいくつかあります。これらのフィールドも にバインドしCustomerBindingSource
ました。顧客が選択されると、これらのフィールドには期待どおりにその顧客のプロパティが表示されます。
私の問題は、フォームを使用して新しい作業注文を取得する場合です。で新しいWorksOrder
オブジェクトをインスタンス化し、CustomerId == null
それを にバインドしWorksOrderBindingSource
ます。にオブジェクトがないCustomerBindingSource
ためId == null
、予想どおり、ドロップダウン コンボボックスは空白ですが、CustomerBindingSource.Current
プロパティはそのデータソースの最初の Customer オブジェクトを指しています。顧客にリンクされた表示フィールドには、その顧客の値が表示されますが、顧客はまだ選択されていません。
私には明らかなこれに対する唯一の回避策は、不器用に思えます。その中には、顧客が入力した 2 つのバインディング ソースがあります。1 つは選択した顧客用で、顧客表示フィールドにデータを入力するためのもので、もう 1 つは単に顧客のドロップダウンにデータを入力するためのものです。次に、選択イベントを処理する必要があります。顧客が選択された場合にのみ、表示フィールドのバインド ソースでその顧客を見つけ、何も選択されていない場合は、表示フィールドのデータ ソースを null に設定します。これは物凄く手ごわい感じです。私が望むものを達成する他の方法はありますか?