PDA

View Full Version : ساخت رویداد



Hossis
سه شنبه 17 آذر 1388, 22:50 عصر
چطور می توان رویدادی که در سطح فرم معرفی کردیم، به فرم اختصاص پیدا نکند بلکه به یک کنترل خاص روی فرم اختصاص یابد
فرض کیند یک رویداد معرفی کردیم به این شکل


private Event ChangeColor(s as Object, e as eventargs)

در حالت معمولی این یکی از رویدادهای فرم می شود مثلا می نویسیم
sub Form_ChangeColor
ولی می خواهم این رویداد مال تکست باکس باشد

sari-1369
چهارشنبه 18 آذر 1388, 00:03 صبح
شی هایی که تو حالت design ساخته میشن که به طور پیش فرض رویداد دارن ، اما اگر میخوای برای شی هایی که به صورت run time ساخته میشن رویداد بسازی باید اینطوری عمل کنی :


AddHandler txtbox(id).TextChanged, AddressOf txtbox_textChanged


Protected Sub txtbox_textChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim i, index As Integer
Dim Tbox As New TextBox
Tbox = CType(sender, TextBox)
index = Tbox.Tag
End Sub

به اون کدای داخل رویداد توجه نکن ، اصل اون رویداد هستش که بهش دسترسی داری .

من چون از آرایه ای از تکست باکس استفاده کردم ، از طریق اون چند خط متوجه میشدم که رویداد برای کدوم textbox داره اتفاق میافته .

Mani_rf
چهارشنبه 18 آذر 1388, 14:47 عصر
Protected Sub txtbox_textChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim i, index As Integer
Dim Tbox As New TextBox
Tbox = CType(sender, TextBox)
index = Tbox.Tag
End Sub[/code]

به اون کدای داخل رویداد توجه نکن ، اصل اون رویداد هستش که بهش دسترسی داری .

من چون از آرایه ای از تکست باکس استفاده کردم ، از طریق اون چند خط متوجه میشدم که رویداد برای کدوم textbox داره اتفاق میافته .

درود...
اگر من جای شما باشم برای بدست آوردن خاصیت Tag تکست باکسی نوشته آن تغییر کرده (البته با فرض این که تکست بکس ها در زمان اجرا ایجاد شده باشند و یا آرایه ای به تعداد نامشخص باشند) از این روش استفاده می کنم :


DirectCast(Sender,TextBox).Tag

Computer.Programmer
چهارشنبه 18 آذر 1388, 16:57 عصر
دوست عزیز فکر نکنم منظور شما اون چیزی بوده باشه که دوستان جواب دادن.
شما واسه اینکه به کنترلی رویدادی اضافه کنید فکر نکنم چاره ای جز ساخت یک CustomControl و ارث بردن از کنترل مد نظر و همچنین اختصاص دادن رویدادتون به اون باشه.
موفق باشید

Hossis
چهارشنبه 18 آذر 1388, 21:55 عصر
شی هایی که تو حالت design ساخته میشن که به طور پیش فرض رویداد دارن ، اما اگر میخوای برای شی هایی که به صورت run time ساخته میشن رویداد بسازی باید اینطوری عمل کنی :


AddHandler txtbox(id).TextChanged, AddressOf txtbox_textChanged


Protected Sub txtbox_textChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim i, index As Integer
Dim Tbox As New TextBox
Tbox = CType(sender, TextBox)
index = Tbox.Tag
End Sub

به اون کدای داخل رویداد توجه نکن ، اصل اون رویداد هستش که بهش دسترسی داری .

من چون از آرایه ای از تکست باکس استفاده کردم ، از طریق اون چند خط متوجه میشدم که رویداد برای کدوم textbox داره اتفاق میافته .
رویداد textChanged به طور پیش فرض هست ، اگه یک مثالی می زدید که رویدادی وجود نداشته باشد و بخواهیم در زمان اجرا ایجاد و به کنترل نسبت دهیم مثلا رویداد tagChanged را ساخته باشیم به طوری که رویداد تکست باکس شود و بتوانیم بنویسیم
Sub TextBox1_TagChanged

درود...
اگر من جای شما باشم برای بدست آوردن خاصیت Tag تکست باکسی نوشته آن تغییر کرده (البته با فرض این که تکست بکس ها در زمان اجرا ایجاد شده باشند و یا آرایه ای به تعداد نامشخص باشند) از این روش استفاده می کنم :


DirectCast(Sender,TextBox).Tag

من زیاد متوجه نشدم و جیزی از این یک خط نفهمیدم که کجا و چطوری باید وارد کرد؟؟

دوست عزیز فکر نکنم منظور شما اون چیزی بوده باشه که دوستان جواب دادن.
شما واسه اینکه به کنترلی رویدادی اضافه کنید فکر نکنم چاره ای جز ساخت یک CustomControl و ارث بردن از کنترل مد نظر و همچنین اختصاص دادن رویدادتون به اون باشه.
موفق باشید
فکر کنم آخرش هم باید به همین نتیجه رسید
به هر حال ممنون از همگی