PDA

View Full Version : سوال: DataGridView scroll error - minimum and maximum values



nader.golab
دوشنبه 09 اسفند 1389, 22:58 عصر
سلام به دوستان و عرض خسته نباشید
من مشکلی پیدا کردم تو DataGridView از کامپوننت DotNetBar ورژن 8.2.2 و 9.0.0 . با DotNetFramework 3.5 کار می کنم.

مشکل:زمانی که من این دیتا گرید را با حلقه For پر می کنم که تعداد ردیفش از 10 بالا تر بره.scroll این دیتا گرید به مشکل بر می خوره و حالت Enabled=false رو می گیره(فقط scroll) و وقتی با کلید چهار جهت(به سمت پایین) می دم بعد از گزشتن از ردیفای اولی(ده تا) این پیغام رو به من می ده:

Value of '176' is not valid for 'Value'. 'Value' should be between 'minimum' and 'maximum'.
Parameter name: Value

کد:



Private Sub SelAddListMul(ByVal StrAdress As String)

For Each dr As DataRow In Ds.Tables(0).Rows
ListAdress.Rows.Add()
ListAdress.Rows(ListAdress.Rows.Count - 1).Cells(1).Value = StrAdress
ListAdress.Rows(ListAdress.Rows.Count - 1).Cells(2).Value = dr("FLName").ToString
ListAdress.Rows(ListAdress.Rows.Count - 1).Cells(3).Value = dr("Co_Customer").ToString
ListAdress.Rows(ListAdress.Rows.Count - 1).Cells(4).Value = dr("Type_Customer").ToString
ListAdress.PerformLayout()
Next

End Sub



درخواست:چه کدی یا چه راه حلی باید انجام بدم تا این مشکلم برطرف بشه

ممنون از همه دوستان و استادان این سایت

nader.golab
سه شنبه 10 اسفند 1389, 14:40 عصر
با عرض سلام و خسته نباشید

من خودم تحقیق کردم و به این نتیجه رسیدم: من کد بالا را در Threading اجرا کردم که این مشکل برا من پیش میامد.اگر من این کد رو بدون Threading بنویسم هیچ گونه مشکلی ندارم.البته ترید درست اجرا می شه اما ظاهرا ترید باید کاملا در پایان بلوک از بین برود اما چنین نیست و ترید به جای اینکه از بین برود Suspend "متوفق" می شود و در این صورت دیتا گرید من این حالت را دست می دهد و فقط شکل ظاهری scroll پاک یا به صورت Enabled=false در می اید.

مشکل:حالا من باید با ترید چگونه کار کنم که زمانی که بلوک من به به پایان رسید Thread از بین برود(بمیرد).خواهش می کنم از دوستان اگر چیزی در این مورد می دونن به من هم آموزش دهند تا عیبم را برطرف کنم.

کد:



Public Class Form1
Dim ThMul As Threading.Thread

Private Sub btnBazSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBazSend.Click

ThMul = New Threading.Thread(AddressOf SelAddListMul)
Control.CheckForIllegalCrossThreadCalls = False
ThMul.IsBackground = True
ThMul.Start("teh-blvIran")

End Sub

End Class


با تشکر فراوان