PDA

View Full Version : مبتدی: قرار دادن یک متغییر بر تمامی لیبل ها



ali.rk
دوشنبه 18 شهریور 1392, 08:11 صبح
سلام
در یه فرم تعداد زیادی لیبل وجود دارد چگونه متن تمامی لیبل ها را یک متغییر کنیم .؟

mahdi.a.v
دوشنبه 18 شهریور 1392, 09:55 صبح
میدونی تعداد دقیق لیبل ها چه تا هست یا نه ؟؟؟

ali.rk
دوشنبه 18 شهریور 1392, 10:06 صبح
چه فرقی داره نه نمی دونم (ولی می تونم محاسبه کنم .)

lastmory
دوشنبه 18 شهریور 1392, 10:43 صبح
با سلام
اینو تست کن

For Each Control As Windows.Forms.Control In Me.Controls
If Control.GetType.Name = "Label" Then
Control.Text = "...."
End If

Next

ali.rk
دوشنبه 18 شهریور 1392, 10:56 صبح
:افسرده: نه کار نکرد

lastmory
دوشنبه 18 شهریور 1392, 11:17 صبح
لیبلهاتو کجا گذاشتی ، مستقیما توی فرم هست یا توی گروپ باکس یا پنل ؟؟

ali.rk
دوشنبه 18 شهریور 1392, 11:18 صبح
با سلام
اینو تست کن

For Each Control As Windows.Forms.Control In Me.Controls
If Control.GetType.Name = "Label" Then
Control.Text = "...."
End If

Next
دوست عزیز کد شما درست کار می کنه
دوستان ببخشید مشکل از یه جای دیگه بود .

aliagamon
دوشنبه 18 شهریور 1392, 14:27 عصر
با سلام
اینو تست کن

For Each Control As Windows.Forms.Control In Me.Controls
If Control.GetType.Name = "Label" Then
Control.Text = "...."
End If

Next
دوست عزیز شما دارین اضافه کاری میکنی ... :لبخند: جای اینکه یه شرط بزاری که چک کنه لیبل هست یا نه یهو بیاین فقط لیبل هارو با for each بگیرین:

For Each l As Label In Me.Controls
l.Text = "...."
Next

مهرداد صفا
دوشنبه 18 شهریور 1392, 18:01 عصر
دوست عزیز شما دارین اضافه کاری میکنی ... :لبخند: جای اینکه یه شرط بزاری که چک کنه لیبل هست یا نه یهو بیاین فقط لیبل هارو با for each بگیرین:

For Each l As Label In Me.Controls
l.Text = "...."
Next


با سلام.
دوست عزیز تعریف نوع متغیر حلقه، تغییری در مجموعه نمی دهد و فیلتری هم انجام نمی شود. تنها نوع متغیر برای intelli sense شناخته خواهد بود و در صورتی که آیتم موجود در مجموعه با نوع متغیر تعریف شده همخوانی نداشته باشد و یا قابل تبدیل نباشد با خطای زمان اجرا روبرو می شوید.
در مثال زیر نوع integer به long قابل تبدیل است و برنامه بدون خطا اجرا می شود:

Dim numbers(10) As Integer
For Each n As Long In numbers
MsgBox(n)
Next

برای کد شما میتوان از "on error resume next" استفاده کرد:

On Error Resume Next
For Each Control As Label In Me.Controls
Control.Text = "value"
Next

و یا با استفاده از where مقادیر را فیلتر کرد:

For Each ctrl As Label In Me.Controls.Cast(Of Control).Where(Function(c) TypeOf (c) Is Label)
ctrl.Text = "value"
Next