PDA

View Full Version : سوال: چطور میتونم این کد رو در حال اجرا به اشیاء ایجاد شده نسبت بدم؟؟



baran_mehr
دوشنبه 22 مهر 1387, 15:23 عصر
سلام خدمت همه بزرگترا و بازم بزرگترا(اخه کوچیکتون منم):لبخند:
این کد رو یکی از دوستامون تو یکی از پست ها گذاشتن که برای تخصیص یک عمل روی رویدادهای اشیاء هست.
میخواستم ببینم چطور میشه به اشیایی که هنوز مشخص نیست چند تا از روشون ساخته میشه این کد رو نسبت داد؟؟
مثلا یک GridView رو در نظر بگیرید که توی یک ستون Button قرار داده شده و میخوایم برای همشون یک رویداد ثابت در نظر بگیریم.چطور باید این کار رو کرد؟؟؟:لبخندساده:


PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
AddHandler TextBox1.TextChanged, AddressOf Roshanfekr
AddHandler TextBox2.TextChanged, AddressOf Roshanfekr
EndSub
این هم کد پردازه مشترک
Private Sub Roshanfekr(ByVal sender As System.Object, ByVal e As System.EventArgs)
msgbox (sender.name)
EndSub
:تشویق::قلب::تشویق:

rooshan2008
دوشنبه 22 مهر 1387, 16:16 عصر
سلام

خود DataGridviewیک همچین رویدادی برای تمام سلولها ش داره مثل:






Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
Select Case e.ColumnIndex
Case 0

............دستورات شما یرای سلول اول.........

Case 1

............دستورات شما یرای سلول دوم .........

Case 2

............دستورات شما یرای سلول سوم.........

End Select

End Sub

به دستور Case 0 توجه کنید منظورم این هست که اگه روی سلول اول دیتاگرید کلیک شد
Case 1 منظورم این هست که اگه روی سلول دوم دیتاگرید کلیک شد

baran_mehr
دوشنبه 22 مهر 1387, 17:27 عصر
خوب تعداد سطر ها که مشخص نیست.
چون گرید به دیتابیس متصل میشه و ممکنه 100 تا رکورد داشته باشه یا کمتر رو بیشتر.
فکر نمکم خوب باشه که از Case استفاده کنم.تازه نمیدونم چند تا رکورد داره که بخوام از Case استفاده کنم.

mostafaaa
دوشنبه 22 مهر 1387, 17:45 عصر
سلام
البته برای DataGridView فکر نمیکنم احتیاجی باشه که از متد AddHandler استفاده بشه.چون ما رویدادمون رو برای یک گروه از Button ها مینویسیم که مثلا توی ستون سوم DataGridView قرار گرفته. ولی اگه به ازای هر سطر از DataGridView بخوای توی فرمت یه Button اضافه کنی میتونی با این کدی که واست میزارم براشون رویدادهای مربوطشون رو بنویسی.

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
For Each CTRL As Control In Me.Controls
If TypeOf CTRL Is Button Then
AddHandler CTRL.Click, AddressOf ButtonsClick
End If
Next
End Sub
Private Sub ButtonsClick(ByVal sender As Button, ByVal e As EventArgs)
MessageBox.Show("Your code here!!")
End Sub

rooshan2008
دوشنبه 22 مهر 1387, 18:22 عصر
ولی چیزی که من گفته بودم اصلاً هر چقدر رکورد داشته باشه هم کار می کنه چون تعداد case ها ربطی به اندازه رکورد ها نداره بلکه به تعداد سلولها هست....به این توجه کن منظور من (هدر ها)(تیتر ها)(Column)


مثلاً اگه به رکورد 100 هم بری اگه روی روی سلول دوم کلیک کنی باز هم case 2اجرا میشه....OK

baran_mehr
دوشنبه 22 مهر 1387, 18:31 عصر
داداش mostafaaa جان.
کد شما تمام کنترولهای Button موجود در فرم رو به یه رویداد متصل میکنه اما میخوام کنترولهای موجود درون DataGrid این اتفاق براشون بیفته.
من مقدار Me.Controls رو به DataGridView1.Controls هم تغییر دادم اما نشد

baran_mehr
دوشنبه 22 مهر 1387, 18:42 عصر
تازه متوجه شدم داداش rooshan2008 جان. بله دسته این کد این عمل رو انجام میده.

ببخشید یه سوال دیگه:فرض کنید یک ستون ما چک باکس باشه.چطور میشه فهمید که کدوم سطرهای دیتاگرید چک باکسشون تیک خورده؟؟

mostafaaa
دوشنبه 22 مهر 1387, 19:00 عصر
همونطور که خودتون هم متوجه شدین و کاربر روشن هم گفتن رویدادهایی رو که برا یک ستون از DataGridView مینویسم برای گروه کنترلهای اون ستون اعمال میشه.

rooshan2008
دوشنبه 22 مهر 1387, 19:33 عصر
اینطوری میشه فهمید:






For i = 0 To DataGridView1.Rows.Count - 1
If DataGridView1.Rows(i).Cells(1).Value Then

MsgBox(

"(" + CStr(i) + ", 1)=" & DataGridView1.Rows(i).Cells(1).Value)

EndIf
Next





البته این رو هم بگم دومین ستون من از نوع چک باکس بود...
با ارزوی موفقت...

baran_mehr
دوشنبه 22 مهر 1387, 21:00 عصر
خیلی ممنون rooshan2008 جان مشکم حل شد.
از mostafaaa هم تشکر میکنم امیدوارم به زیباترین ارزوهاتون برسید.