PDA

View Full Version : سوال: تغییر رنگ تمام text ها در موقع focus با یک دستور



مرتضی حمزه ئی
چهارشنبه 29 مهر 1388, 10:15 صبح
با سلام خدمت دوستان
من میخوام داخل فرمم که تعداد زیادی COMBO وTEXT دارم موقع FOCUS روی یک TEXT یا COMBO رنگ اون عوض بشه وموقع LOSTFOCUS رنگش به حالت عادی برگرده ولی مهم اینه که نمیخوام واسه هر کنترل TEXT یا COMBO برم روی GOTFOCUS وLOSTFOCU دستی بنویسم میخوام ببینم میتونم توی یکی از رویدادهای فرم دستوری رابنویسم که به ازای FOCUS روی اون کنترل رنگ عوض بشه و به ازای LOST دوباره رنگش به حالت قبل برگرده
قسمت دوم سوالم میخوام تمام کنترلهای داخل فرمم را با یک دستور خالی کنم مثل TEXT ها که همه به ازای یک کلید خالی بشه ولی بادستور زیر که توی VB استفاده میکردم جواب نداد کمک کنید
For Each Control In Me.Controls
If (TypeOf (Control) Is TextBox) Then
Control.Text = ""
End If
If (TypeOf (Control) Is MaskedTextBox) Then
Control.Text = ""
End If
Next
ممنون میشم اگه کمک کنید

Hossis
چهارشنبه 29 مهر 1388, 10:26 صبح
اما سؤال اول دو راه داره که بستگی به کار شماهم دارد
اول این که در یک کنترل متن، با رویداد GotFouce و LostFocus رنگ زمینه اونو تغییر بدید و بعد در رویداد Backcolorchanged مربوط به همون کنترل، رنگ تمام کنترل های دیگه روی فرم را چه به صورت دستی یا در یک حلقه ، تغییر دهید یا متن اونا رو خالی کنید.
مثال


Private Sub TextBox1_BackColorChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.BackColorChanged
Me.BackColor = Color.Azure
CheckBox1.BackColor = Color.Azure
ShapeContainer1.BackColor = Color.Black
End Sub

راه دوم هم اینه که دو رویداد (گرفتن و از دست دادن focus ) نوشته و بعد از هندل دادن به اون،‌ رویدادهای دیگر کنترل هار و هم بنویسید
مثال : به متن برجسته کد زیر توجه کنید:
Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus, CheckBox1.GotFocus, Me.GotFocus, Sh1.GotFocus
در مورد سوال دوم هم می توانید به همین منوال عمل کنید

مرتضی حمزه ئی
چهارشنبه 29 مهر 1388, 15:20 عصر
عزیزم اینطوری که شما فرمودید باید واسه هر text برم داخل gotfocus اون وbackcolor را عوض کنم عزیز 30 text دارم واسه همه باید همین عمل را واسه gotfocus ,lostfocus بنویسم ولی با جواب شما جور در نمیاد با ذکر مثال لطف کنید واسه دوتا text بفرمایید با یک تکه کد که همه موقع focus بطوراتوماتیک این کد واسه شون اجرا بشه
ممنون میشم

alimanam
چهارشنبه 29 مهر 1388, 18:18 عصر
با سلام

این هم نمونه کدی که با کدهای دوست عزیزمون Hossis جور درمیاد .
http://img291.imageshack.us/img291/7624/355555.gif

یا علی

مرتضی حمزه ئی
پنج شنبه 30 مهر 1388, 09:29 صبح
دوست عزیز مرسی از جوابتون ولی یک مشکل هست اینه که روی gotfocus رنگ text عوض میشه ولی روی lostfocus که دوباره میخوام رنگش برگرده به حالت قبل عمل نمیکنه منشورم اینه که فیلد روی کنترل فعال مثل textbox2 که باشه رنگش با بقیه فرق کنه ولی برنامه شما عزیز روی lostfocus اون رنگ راعوض نمیکنه یعنی lost باید به ازای کنترل قبلی باشه که رنگش دوباره به حالت قبل برگرده
البته یک Me.ActiveControl.GetType.Name = "TextBox" است ولی فقط با event های form فعال میشه وجایی دیگه نمیشه ازش استفاده کرد در این زمینه هم اگر اطلاعات داری که چگونه ازش استفاده کنم ممنون میشم
ممنون میشم کمکم کنی

Saeed Hamed
پنج شنبه 30 مهر 1388, 10:58 صبح
موفق باشی.

مرتضی حمزه ئی
پنج شنبه 30 مهر 1388, 12:31 عصر
مرسی عزیزم Saeed Hamed لطف کردید درست شد