1

私はそれを書き込もうとしているプログラムを持っています

フォーム上にあるプラスボタンをクリックすると、コンボボックスとテキストボックスの1つの行が動的に作成されます。その後、プラスをクリックし続けると、行が追加され続けますが、新しい行が下に移動します。

私はこのように整理された行を持っています:

建物用のコンボボックスがあり、次に部屋用のコンボボックスがあります。そしてそれは一列です

建物のコンボボックスには建物のリストが含まれています。リストからアイテムを選択するときは、部屋のコンボボックスに建物に対応する部屋番号のリストを入力する必要があります。

私はこれを行うのに非常に苦労しています。これは私が試したことです。

私の行クラスは、新しい行を作成するために使用するものです。ボタンを押すと、新しいコンボボックスなどで新しい行が作成されます。

これが私のイベントハンドラーです

private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
    {

        ComboBox comboBox = sender as ComboBox;
        if (comboBox.SelectedItem.Equals("ATLC"))
        {
            foreach (int x in row.ATLC)
            {
                row.roomComboBox.Items.Add(x);
            }
        }

今、私の問題は、現在の行に関連付けられているroomComboBoxに、対応する部屋番号データを何らかの方法で追加する必要があることです。送信側のコンボボックスは現在の行に関連付けられているので、送信側を使用して同じ行のメンバーであるroomComboBoxを参照する方法はありますか?どんな助けでも素晴らしいでしょう。ここでたくさんのスレッドを検索しましたが、答えが見つからないようです。

編集:

変数が属するオブジェクトを参照する方法はありますか?送信者のcomboBoxの行オブジェクトを何らかの方法で参照できる場合は、それを使用して同じ行オブジェクトの部屋のコンボボックスを参照できる可能性があります...多分?何とかして?お願いします?

4

3 に答える 3

1

この小さなスニペットが役立つことを願っています

(sender as ComboBox).Parent.Controls.Find("cmbRooms",true)

このコードは、ComboBox 送信者を参照して、ID「cmbRooms」のコントロールを取得します。

于 2012-09-27T18:00:34.030 に答える
1

行ごとにコンボボックスを作成するときに、Building コンボボックスの Tag プロパティを Room Numbers コンボボックスに設定できます。これにより、その行に関連付けられているコンボボックスを取得できます。つまり..

// create combobox for row N...
ComboBox cmbBuilding = new ComboBox();
ComboBox cmbRooms = new ComboBox();

// store rooms combobox in building combobox
cmbBuilding.Tag = cmbRooms;

// ...

private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
  ComboBox comboBox = sender as ComboBox;

  // get the room combobox
  ComboBox cmbRooms = comboBox.Tag as ComboBox;

  if (comboBox.SelectedItem.Equals("ATLC"))
  {
    foreach (int x in row.ATLC)
    {
      cmbRooms.Items.Add(x);
    }
  }
于 2012-09-27T17:51:24.730 に答える
0

Windows フォームの DataRepeater コントロールを使用します。Visual Basic Power Pack に含まれていますが、C# プロジェクトでも使用できます。

別のオプションは、を使用することDataGridViewです。

于 2012-09-27T17:44:57.267 に答える