0

DataGridViewを追跡するために を使用していList<myObject>ます。設定するには、次の foreach ループを使用します。

foreach (myObject object in myList)
{
    if (object.Status == Status.Available)
    {
        myDataGridView.Rows.Add(object.Name, object.Status.ToString());
    }
}

次に、イベントを使用して、選択した行のオブジェクトの新しいフォームを作成します。

void myDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    var index = myList[myDataGridView.CurrentRow.Index];
    myForm form = new myForm(index);
}

したがって、リスト内のアイテムのステータスが変更されるまで、これは問題なく機能します。

myList[10].Status = Status.Unavailable;

myDataGridViewが更新されると、行インデックスを使用して 10 を超える行の正しいフォームを開くことができなくなりました。どうすればよいか途方に暮れています。

インデックスが一致しなくなった場合でも、正しいフォームを開く方法を誰か教えてもらえますか?

編集:myListゲーム内のキャラクターを保持します。一部はレンタル可能で、一部はレンタル可能ではありません。myDataGridViewステータスが のものだけを入力する必要がありますAvailable

4

3 に答える 3

0

グリッドビューに必要なリストを直接入力できるのに、なぜこのようにするのか、私には本当にわかりません。

クラス TestObject { public string Code { get; 設定; } パブリック文字列テキスト { get; 設定; } }

void PopulateGrid()
{
    TestObject test1 = new TestObject()
    {
    Code = "code 1",
    Text = "text 1"
    };
    TestObject test2 = new TestObject()
   {
    Code = "code 2",
    Text = "text 2"
    };
    List<TestObject> list = new List<TestObject>();
    list.Add(test1);
    list.Add(test2);

    dataGridView1.DataSource = list; //THIS IS WHAT SHOULD DO IT
}
于 2013-05-14T17:35:23.593 に答える