PDA

View Full Version : عدم نمایش ScrollBars مربوط به DataGrid



reza_devel0per
شنبه 11 آذر 1391, 20:13 عصر
با سلام

بنده وقتی DataGridview رو به صورت معمولی پر میکنم، عملا مشکلی ندارم!! اما با توجه به اینکه تعداد رکوردهای جدولم زیاده، همون دستورات رو درون یک Thread مینویسم تا مشکل کند بودن سرعت حل بشه، اما مشکلی که در این حال پیش میاد اینه که Datagridview بعد از پر شدن، دارای ScrollBars نیست!

لطفا راهنمایی کنید که مشکل Thread با این موضوع چیه و چطور می تونم حلش کنم؟!
با سپاس

swallow.pa
شنبه 11 آذر 1391, 20:17 عصر
آيا پروپرتي Scrollbars رو برابر both قراردادي يا نه؟؟!!

reza_devel0per
شنبه 11 آذر 1391, 20:39 عصر
بله....
عرض کردم که بدون Thread هیچ مشکلی وجود نداره! فقط بعد از اینکه همون کد رو با استفاده از Thread اجرا میکنم، این مشکل وجود میاد.

AvantGarde
شنبه 11 آذر 1391, 22:24 عصر
شما در هر صورت به یک شی DataTable برای پر کردن DataGridView نیاز دارید.ضمن اینکه بار اصلی پردازش روی ارتباط با بانک و گرفتن اطلاعات از بانک هست. داخل نخ جدیدی هم که ایجاد کردید که نمیتونید به DataGridView تو فرمتون دسترسی داشته باشید. پس شما اول با نخ جدیدتون فقط DataTable رو پر می کنید.این کار باعث میشه مشکل نشون ندادن اسکرول بار هم نداشته باشید.چون اصلا به دیتا گرید تو نخ جدید دستیابی نمیکنید. بعد از اتمام نخ جدید، خاصیت DataGridView1.DataSource رو برابر DataTable می کنید.

این کد رو داخل رویداد DoWork از شی BackgroundWorker قرار میدید:

Dim da As New SqlDataAdapter("select * from t1", conn)
Dim dt As New DataTable
da.Fill(dt)
e.Result = dt
البته DataTable رو میتونید عمومی هم تعریف کنید.

این کد رو هم در رویداد RunWorkerCompleted از شی BackgroundWorker میذارید:

DataGridView1.DataSource = e.Result

reza_devel0per
یک شنبه 12 آذر 1391, 01:27 صبح
مرسی AvantGarde (http://barnamenevis.org/member.php?272421-AvantGarde)
همون کد رو بدون Thread نوشتم و از Application.DoEvents استفاده کردم، مشکل حل شد...