PDA

View Full Version : سوال: تغییر خواص چند کنترل هم نوع ( مثلا چند Textbox ) با تغییر یک مرجع



pooya1072
سه شنبه 08 اسفند 1391, 19:17 عصر
سلام
فرض کنید توی یک فرم 50 تکست باکس داریم که می خواهیم مثلا فونت همه آنها Arial باشد . بهترین کار برای حل این مسئله چیه؟
اینکه برای هر کدام جداگانه تعریف کنیم در تعداد زیاد کار جالبی نیست.
اگه ممکنه با یک مثال عملی توضیح بدید.
متشکرم

JaVa
سه شنبه 08 اسفند 1391, 19:22 عصر
خیلی راحته.

شما 2 تا راه دارید بدون کد نویسی.

1- قبل از قرار گرفتن کنترل ها رو فرم برید مشخصه Font فرم رو تنظیم کنید. بعد کنترل هاتون رو فرم بزارید بصورت خودکار فونت کنترل ها با فونت فرم یکی میشه.

راه دوم. اگه شما الان کنترل هاتون روی فرم گذاشتید کافی یه GroupBox به فرم اضافه کنید و مشخصه Font کنترل GroupBox رو عوض کنید بعد کنترل هاتون رو توی کنترل GroupBox بکشید خودشون فونتشون عوض میشه.

موفق باشید

SHD.NET
سه شنبه 08 اسفند 1391, 19:24 عصر
سلام. اونطور که متوجه شدم انگار میخواین کل تکست باکس ها رو فونتشون رو از طریق کدنویسی عوض کنید ، کد زیر این کارو انجام میده
Option Strict On
Public Class Form1

Private Sub Form1_FontChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.FontChanged

ChangeFontName(Me, Me.Font)

End Sub

Public Shared Sub ChangeFontName(ByVal aForm As Form, ByVal aFont As Font)

For Each frm As Form In My.Application.OpenForms
If frm.HasChildren = True Then
For Each ctrl As Control In frm.Controls
ChangeFontName(ctrl, aFont)
Next
End If
Next

If aForm.IsMdiContainer = True Then
For Each frm As Form In aForm.MdiChildren
If frm.HasChildren = True Then
For Each ctrl As Control In frm.Controls
ChangeFontName(ctrl, aFont)
Next
End If
Next
End If

End Sub

Public Shared Sub ChangeFontName(ByVal aControl As Control, ByVal aFont As Font)

If aControl.HasChildren = True Then
For Each ctrl As Control In aControl.Controls
ctrl.Font = New Font(aFont.Name, ctrl.Font.Size, ctrl.Font.Style, ctrl.Font.Unit, ctrl.Font.GdiCharSet, ctrl.Font.GdiVerticalFont)
ChangeFontName(ctrl, aFont)
Next
Else
'This line added as child controls without children were not being changed.>>
aControl.Font = New Font(aFont.Name, aControl.Font.Size, aControl.Font.Style, aControl.Font.Unit, aControl.Font.GdiCharSet, aControl.Font.GdiVerticalFont)
End If

End Sub

End Class

**موفق باشید**

pooya1072
سه شنبه 08 اسفند 1391, 21:19 عصر
با سلام و تشکر
دوستان عزیز .... تکست باکس و فونت اون رو به عنوان مثال گفتم . مثلا اگه بخوام عرض تکست باکسها یا مقدار left همه اونها رو عوض کنم چی؟
منظور من تمام پروپرتی های قابل تغییر یک کنترله . من به دنبال یه جواب کلی تر هستم . مثلا از طریق تعریف یه کلاس جدید که از کنترل مورد نظر خواص را به ارث برده باشد یا یک چنین چیزی.