System.argumentoutofrangeException: ‘chỉ mục nằm ngoài phạm vi. Phải không âm và nhỏ hơn kích thước của bộ sưu tập. Tên tham số: chỉ mục’

lập trình


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();
           }

Những gì tôi đã thử:

trong sự kiện nhấp chuột, tôi đang viết mã kẻ thù, lấy các giá trị lưới vào hộp văn bản

Giải pháp 1

Chúng tôi không thể nói với bạn “Nó ở đó!” bởi vì chúng tôi cần mã chạy cùng với dữ liệu của bạn để tìm ra chính xác nơi nó đang xảy ra và giá trị nào đang gây ra sự cố – và bạn cần điều đó trước khi có thể bắt đầu xem xét Tại sao nó sai!

Tất cả những gì chúng ta có thể làm là giải thích tại sao nó lại gây ra vấn đề. Mảng trong C# là một chuỗi các giá trị được truy cập thông qua một chỉ mục: và chỉ mục đó phải nằm trong khoảng từ 0 đến “số giá trị trừ một”. Vì vậy, nếu bạn có một mảng chứa năm số nguyên chẳng hạn, thì các chỉ mục hợp lệ là 0, 1, 2, 3 và 4. Tất cả các chỉ mục khác sẽ báo lỗi vì giá trị bạn đang cố xử lý không tồn tại.
Vì vậy bạn có thể nói:

C#
i = arr[0];
i = arr[1];
i = arr[2];
i = arr[3];
i = arr[4];

Nhưng không:

C#
i = arr[-1];
i = arr[5];
i = arr[666];

Và mã của bạn sử dụng một số mảng, bất kỳ mảng nào trong số đó đều có thể là nguồn gốc của vấn đề.

Vì vậy, nó sẽ tùy thuộc vào bạn.
May mắn thay, bạn có sẵn một công cụ giúp bạn tìm hiểu điều gì đang xảy ra: trình gỡ lỗi. Nếu bạn không biết cách sử dụng nó, “Trình gỡ lỗi Visual Studio” nhanh chóng của Google sẽ cung cấp cho bạn thông tin bạn cần.

Đặt điểm dừng trên dòng đầu tiên trong hàm và chạy mã của bạn thông qua trình gỡ lỗi. Sau đó, hãy xem mã và dữ liệu của bạn và tìm hiểu xem điều gì sẽ xảy ra theo cách thủ công. Sau đó, thực hiện từng bước một để kiểm tra xem điều bạn mong đợi xảy ra có chính xác là điều đã xảy ra hay không. Nếu không, đó là lúc bạn gặp sự cố và bạn có thể theo dõi lại (hoặc chạy lại và xem xét kỹ hơn) để tìm hiểu lý do.

Theo phỏng đoán, bộ sưu tập SelectedItems trống hoặc không có đủ cột trong lưới nhưng bạn cần mã chạy cùng với dữ liệu của mình để biết.

Xin lỗi, nhưng chúng tôi không thể làm điều đó cho bạn – đã đến lúc bạn học một kỹ năng mới (và rất, rất hữu ích): gỡ lỗi!

コメント

タイトルとURLをコピーしました