7

これは少し奇妙なことですが、私は数時間格闘しており、何が起こっているのか理解できません。

他の誰かがこの問題を経験していて、おそらくそれを説明できるかどうか疑問に思っていました. 私は単純な Winforms アプリを構築しており、組み込みのコントロールの多くを使用しようとしています。

基本的に、ユーザー コントロールといくつかのデータ キャプチャ フィールドを含むフォームがあります。3 つのフィールドはドロップダウン リストであり、ユーザー コントロールには、Product クラスに直接バインドする bindingSource コントロールがあります。

実行時に Product クラスのインスタンスを BindingSource に提供し、クラスにはProductType. 簡単にするためにList<ProductType>、クエリ時にそれ自体をロードする ProductTypes も Product クラスに追加しました。つまり、同じ bindingSource を使用して、ProductTypesデータ メンバーをドロップダウンリストのデータソースとして選択できます。

フォームを実行すると、リストが完全にバインドされ、リストされているすべての製品タイプが表示されます。1 つを選択してタブで移動するか、クリックして次のフィールドに移動できます。しかし、明らかに、ドロップダウンに bindings-SelectedValue を選択しておらず、データソースのみを選択しているため、選択した値はバインドされません。ドロップダウンが Bindings-SelectedValue にバインドして Product のインスタンスを変更することを確認してからフォームを実行すると、リストは完全に読み込まれ、コントロールをタブで移動することができます。ドロップダウンから選択します。ドロップダウンから選択すると、ドロップダウンがフォーカスを保持します. 愛やお金のためにタブアウトすることはできず、フォームのキャンセルボタンをクリックすることさえできません。右上の閉じるボタンをクリックできる唯一のボタンであり、他のフィールドやドロップダウンをクリックすることはできません。これは、選択が行われるとすぐに 3 つのドロップダウンすべてに影響します。

私が見逃しているものは誰にもありますか?

私はいくつかのことを変更しようとしましたが、ドロップダウン値にオブジェクトのメンバーではなく string[] を与えることで成功しました。それは機能しているように見えますが、データバインディングを使用するという目的を無効にしますね?

どんな助けでも大歓迎です!

4

3 に答える 3

11

今はテストをセットアップして確認する時間がないので、推測ですが、検証は行っていますか? コンテンツが検証されない場合、データ バインドされたコントロールはユーザーを離れさせないことを覚えているようです。明示的でない場合でも、CausesValidation を False に設定して、舞台裏で何らかの検証が行われているかどうかを確認してください。少なくともヒントが得られる可能性があります。

于 2008-11-14T16:48:30.910 に答える