PDA

View Full Version : سوال: Index was out of range.



XilizaX
پنج شنبه 24 فروردین 1391, 14:24 عصر
سلام
دوستان من يک برنامه نوشتم که داراي يک DataGridView هست. اين کد در زمان اجرا وقتي به قسمت زير ميرسه اين Error را ميده .... ميشه نگاهي بکنيد ... ممنون.

Error : Index was out of range. Must be non-negative and less than the size of the collection.Parameter name: index

'-----------------------------------------------------------------------------
'نامگذاري رکوردها

For A As Double = 0 To Main.Tekrar.Text
DataGridView1.Rows(A).HeaderCell.Value = "تکرار" & A + 1

Next

Hybrid
پنج شنبه 24 فروردین 1391, 14:38 عصر
سلام ، به زبان ساده ،

ممکنه داخل دیتا گرید 6 تا رکورد داشته باشین ولی شما داخل Main.Tekrar.text که احتمالا یک تکست باکس هست مثلا بنویسید 10 ،

خوب حلقه 10 بار اجرا میشه در حالی که شما 6 تا رکورد داری و خطای Index was out of range نشان داده میشه. بهتره بنویسید


For i As Integer = 0 To DataGridView1.Rows.Count - 1
'دستورات مربوطه
Next

موفق باشید

XilizaX
پنج شنبه 24 فروردین 1391, 15:00 عصر
از پاسخت متشکرم رئيس و لي متوجه نميشم ... يعني نميتونه اينطور باشه.
من کل کدي که باعث ساخت ستون و رکورد ها در اون DGV ميشه رو برات ميزام. کد خيلي ساده است. به اندازه اي که کاربر در تکست باکس ها وارد ميکنه ستون و رکورد ساخته ميشه و سپس هدر رکورد ها تغيير نام پيدا ميکنه ... يعني بايد بکنه که نميشه ! سرم درد گرفت از بس فکر کردم!


Public Class Data

Private Sub Data_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load

'------------------------------------------------------------------------------
'کد ساختن ستون هاي مورد نياز

For A As Int16 = 1 To Main.Timar.Text
DataGridView1.Columns.Add("Timar" & A, "تيمار" & A)
Next
'-----------------------------------------------------------------------------

'کد ساختن رکوردهاي مورد نياز

For A As Int16 = 1 To Main.Tekrar.Text
DataGridView1.Rows.Add()
Next

'-----------------------------------------------------------------------------
'تغيير اندازه رديف ها غير ممکن مي‌شود

DataGridView1.AllowUserToAddRows = False

'-----------------------------------------------------------------------------
'نامگذاري رکوردها
For A As Int16 = 0 To Main.Tekrar.Text
DataGridView1.Rows(A).HeaderCell.Value = "تکرار" & A + 1

Next



End Sub

End Class

XilizaX
پنج شنبه 24 فروردین 1391, 15:07 عصر
از همه ممنونم.
با تغيير خط 27 به

For A As Int16 = 0 To Main.Tekrar.Text - 1

مشکل حل شد. /m\