PDA

View Full Version : انتخاب یک سلول در یک سط دیتا گرید ویو در هر ثانیه



mansourii
شنبه 08 تیر 1392, 10:59 صبح
سلام
دوستان من یک دیتاگریدویو دارم که فقط یک ستون داره
میخوام در هر یک ثانیه یک بار اطلاعات داخل هر سطر اون ستون رو بخونه و تو تکست باکس بریزه(با استفاده از timer
(یعنی در ثانیه اول سطر اول رو بخونه و تو تکست باکس بریزه در ثانیه دوم سطر دوم رو بخونه و تو همون تکست باکس بریزه تا اینکه سطرها تموم شه
اگه امکان داره راهنماییم کنید.

sonofsun
شنبه 08 تیر 1392, 12:09 عصر
سلام

در منوی propertiesتایمر مورد نظر interval را برابر 1000 قرار بده و خصوصیت enabedآن رو هم true کن.
سپس روی تایمر مورد نظر دابل کیلک کن و کن زیررو وارد کن:

Dim a=0
Try
Textbox1.Text=Dataset1.Table(a).field
a+=1
Catch ex Asoledb.oledbException
a=0
end try


این هارو جایگزین کن
Textbox1=نام تکست باکس مورد نظر
Dataset1=نام دیتاست مورد نظر
Table=نام جدول مورد نظر
Field=نام فیلد مورد نظر


اگر مشکل داشت بگو تا رفع کنم.

mansourii
شنبه 08 تیر 1392, 13:25 عصر
سلام
از این که کمکم میکنید واقا سپاس گذارم
دوست عزیز این دیتا ستی که نوشته چه کار میکنه؟ من میخوام سطرهای دیتاگریدویو رو به فاصله زمانی یک ثانیه توی یک تکست باکس بندازم
این کدی که شما نوشتید چطور میخواد پرش کنه به بالا؟

من تااینجا پیش رفتم

Private Sub DataGrid_Text()
Dim i As Integer = 1
Dim j As Integer = DataGridView1.RowCount
Dim m As Integer
m = DataGridView1.CurrentRow.Index
DataGridView1.Rows(0).Selected = False
While i <= DataGridView1.Rows.Count - 1
DataGridView1.Rows(i - 1).Cells(0).Selected = False
DataGridView1.Rows(i).Cells(0).Selected = True
Timer1.Interval = 1000
Timer1.Start()
If DataGridView1.Rows(i).Cells(0).Selected = True Then
TextBox1.Text = DataGridView1.Item(0, m).Value
End If
i = i + 1
If Timer1.Interval = 1000 Then
Timer1.Stop()
End If
End While

End Sub
دوتا مشکل داره
یکیش اینه که الان سطرها رو یکی یکی میخونه اما توی تکست باکس نمیریزه
دومیش اینه که یک ثانیه صبر نمیکنه یک دفعه همه رو میخونه (با این که با تایمری که start و end کردم

بازم ممنون اما اگه میشه واضح بیان کنید
چطور رفعش کنم

mansourii
شنبه 08 تیر 1392, 14:30 عصر
سلامی دوباره
مشکل خوندن حل شد

Dim i As Integer
Dim j As Integer = DataGridView1.RowCount
Dim m As Integer
m = DataGridView1.CurrentRow.Index
While i <= DataGridView1.Rows.Count - 1
If Trim(TextBox1.Text) = Trim(DataGridView1.Rows(i).Cells(0).Value) Then
DataGridView1.Rows(i).Selected = True
TextBox1.Text = DataGridView1.Rows(i).Cells(0).Value
Exit While
End If
i = i + 1
End While
این کد توی timer نوشتم و کمی تغغیر
اما الان همه اطلاعات در یک ثانیه از دیتاگرید به تکست باکس منتقل میکنه و نمیشه دید
چه کنم که هر یک ثانیه یکبار اطلاعات رو بخونه؟ یعنی یک وقفه بندازم که تمام اطلاعات رو یکدفعه نخونه؟

shahryari
شنبه 08 تیر 1392, 14:31 عصر
سلام اینکار بسیار ساده است
Dim i As Integer
Dim d As Integer
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
i = 0
d = DataGridView1.Rows.Count
Timer1.Enabled = True
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If i = d Then
i = 0
End If
TextBox5.Text = DataGridView1.Rows(i).Cells(0).Value.ToString
i += 1
End Sub

mansourii
شنبه 08 تیر 1392, 15:07 عصر
وری نایس :لبخندساده:
ممنون

mohammadsaleh
شنبه 25 فروردین 1397, 15:06 عصر
سلام دوستان
من از تکه کد فوق برای خواندن اطلاعات دیتا گرید ویو و انجام عملیات روی اون استفاده می کنم ولی در آخرین ردیف خطا میده.
چه جوری میشه جلوی این خطا را گرفت
خطا: Index was out of range error (https://www.daniweb.com/programming/software-development/threads/442078/index-was-out-of-range-error)

hamidrezax1
یک شنبه 26 فروردین 1397, 06:02 صبح
d = DataGridView1.Rows.Count -1