[ad_1]
private void ItemGV_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0) { txtItemnum.Text = ItemGV.SelectedRows[0].Cells[0].Value.ToString(); txtItemname.Text = ItemGV.SelectedRows[0].Cells[1].Value.ToString(); comboCat.SelectedItem = ItemGV.SelectedRows[0].Cells[2].Value.ToString(); txtitemprice.Text = ItemGV.SelectedRows[0].Cells[3].Value.ToString(); //txtemail.Text = UserGV.SelectedRows[0].Cells[4].Value.ToString(); }
私が試したこと:
クリックイベントでグリッド値をテキストボックスに取得するコードを書いています
解決策 1
「あるよ!」とは言えません。 正確にどこで問題が発生しているのか、どの値が問題の原因となっているのかを調べるには、データを使用してコードを実行する必要があるため、調査を開始する前にそれが必要になるからです。 なぜ それは間違っています!
私たちにできることは、なぜそれが問題を引き起こしているのかを説明することだけです。 C# の配列は、インデックスを介してアクセスされる値のシーケンスです。そのインデックスは、0 から「値の数から 1 を引いた値」までの間でなければなりません。 したがって、たとえば 5 つの整数を含む配列がある場合、有効なインデックスは 0、1、2、3、および 4 です。処理しようとしている値が存在しないため、他のすべてのインデックスではエラーが発生します。
したがって、次のように言うことができます。
i = arr[0]; i = arr[1]; i = arr[2]; i = arr[3]; i = arr[4];
だがしかし:
i = arr[-1]; i = arr[5]; i = arr[666];
また、コードでは複数の配列が使用されており、そのいずれかが問題の原因である可能性があります。
それはあなた次第です。
幸いなことに、何が起こっているかを調べるのに役立つツール、デバッガーが利用可能です。 使い方がわからない場合は、Google で「Visual Studio デバッガー」と検索すると、必要な情報が得られます。
関数の最初の行にブレークポイントを設定し、デバッガーでコードを実行します。 次に、コードとデータを調べて、手動で何が起こるかを考えます。 次に、各行を 1 ステップずつ実行して、期待したことが実際に起こったかどうかを確認します。 そうでない場合は、問題が発生しているときなので、前に戻って (またはもう一度実行して詳しく調べて) 理由を調べることができます。
推測では、SelectedItems コレクションが空であるか、グリッド内に十分な列がありませんが、それを判断するにはデータを使用してコードを実行する必要があります。
申し訳ありませんが、私たちはそれを行うことはできません。新しい (そして非常に便利な) スキルであるデバッグを学ぶ時期です。
[ad_2]
コメント