0

請求書発行アプリケーションをコーディングしています。ユーザーは、ComboBoxから製品を選択することにより、請求書の請求セクションに新しい行を追加できる必要があります。その後、選択した製品に基づいて他のさまざまなフィールド(価格、説明など)に入力します。

私の問題はこれです:ユーザーが製品を追加するとき、私はプログラムが次の製品のために新しい行を自動的に生成することを望みます。これを実現する唯一の方法は、名前を増やして新しいコントロールのセットを作成することだと思われます。つまり、最初の製品の場合はProduct1、Price1、Desc1、2番目の製品の場合はProduct2、Price2、Desc2などです。これは可能ですか。それとも私はそれについてすべて間違っているのですか?

4

1 に答える 1

1

私はある時点でこのようなことをしなければなりませんでした。私がしたことは、カスタムユーザーコントロールを作成することでした.あなたの場合、それはロード中の製品で満たされるコンボボックスと、満たされる関連するすべてのコントロールで構成されます.selectedindexchangedコンボボックスのイベントでアウト。この情報を表示するメイン フォームにパネルを配置し、カスタム ユーザー コントロールをpanels.controlsコレクションに追加します。

すべての機能は基本的にユーザーコントロール自体に含まれているため、命名の問題に遭遇することはありません。

ユーザーが選択を行ったときにユーザー コントロールを追加する場合は、コントロールwitheventsを淡色表示にしてカスタム イベントをユーザー コントロールにアタッチし、メイン フォームで処理することができます。コントロールは実行時に追加されるため、AddHandler呼び出しを使用してイベント ハンドラーをアタッチする必要があります。

したがって、それを分解するには、次のものが必要です。

  1. 各製品に必要なすべてのコントロールと分離コード内の ID を持つカスタム ユーザー コントロール
  2. コンボ ボックスに選択された値があることをメイン フォームに通知するカスタム ユーザー コントロールのイベント
  3. カスタム ユーザー コントロールを保持するメイン フォーム上のパネル
  4. コンボ ボックスで選択が行われたときに、新しい顧客ユーザー コントロールをパネルに追加するイベント ハンドラー。

同じボタンで特定の製品とやり取りしたい場合は、ユーザー コントロールのコード ビハインドに ID を添付し、新しいユーザー コントロールが追加されるたびにそれを設定できます。これは難しいことではないと思いますが、実際にはパネル コントロール コレクションで linq を実行し、指定した条件が満たされているすべてのパネルを取得して、そこから必要なことを実行できます。

2 番目の質問については、ユーザー コントロールが偽の接続文字列をどこかから引っ張っていると思います。私はそれがどこで起こっているのかを追跡し、そこから行こうとします. それを超えるものは単なる WAG であり、実際には役に立ちません。

于 2012-04-25T18:25:41.533 に答える