منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
تغيير لون مجموعه ازرار - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : تغيير لون مجموعه ازرار (/showthread.php?tid=46504)



تغيير لون مجموعه ازرار - Shade0001 - 08-07-23

استخدم هذا الكود لتغيير مجموعة ازرار من BTNRG1 الى BTNRG11 
 Public Sub ColorSelectRG(ByVal colorr As Integer, ByVal colorg As Integer, ByVal colorb As Integer)
        Try
            Dim numColor As Integer = 28
            For i As Integer = 1 To 11
                Dim btn As Button = CType(Me.Controls("BTNRG" & i.ToString()), Button)
                If btn IsNot Nothing Then
                    btn.BackColor = Color.FromArgb(colorr, colorg, colorb)
                    colorg += numColor
                End If
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
المشكلة لا تتغير الالوان بالشكل المطلوب ولا يظهر خطا ولكن قبل استخدام IF في الكود كان يظهر خطا لم اعرف سببة



RE: تغيير لون مجموعه ازرار - Taha Okla - 08-07-23

للتحكم بمجموعة عناصر قم بإستخدام  

For Each...Next : Statement

المنتدى مليء بالكثير من الامثلة
ابحث وستجد أكثر مما ترغب به..
فقط عدل الكود لما يناسب مشروعك..



RE: تغيير لون مجموعه ازرار - Shade0001 - 08-07-23

بحث مالقيت  Undecided كتبته بس نفس المشكلة ما يصير شي
1-
Private Sub COLORSELECTRG(ByRef COLORR As Integer, ByRef COLORG As Integer, ByRef COLORB As Integer)


        Dim NUMCOLOR As Integer = 28
        Dim I As Integer = 1
        For Each btn As Button In Me.Controls.OfType(Of Button)().Where(Function© c.Name.StartsWith("BTNRG"))
            Dim NUMBTN As Integer = I
            NUMCOLOR += 28
            btn.BackColor = Color.FromArgb(COLORR, COLORG, COLORB)
            COLORG += NUMCOLOR
            I += 1
        Next

    End Sub
2-
    Private Sub COLORSELECTRG(ByRef COLORR As Integer, ByRef COLORG As Integer, ByRef COLORB As Integer)

        Dim NUMCOLOR As Integer = 28
        Dim I As Integer = 1
        For Each ctrl As Control In Me.Controls
            If TypeOf ctrl Is Button AndAlso ctrl.Name.StartsWith("BTNRG") Then
                Dim btn As Button = DirectCast(ctrl, Button)
                Dim NUMBTN As Integer = I
                NUMCOLOR += 28
                btn.BackColor = Color.FromArgb(COLORR, COLORG, COLORB)
                COLORG += NUMCOLOR
                I += 1
            End If
        Next

    End Sub



RE: تغيير لون مجموعه ازرار - Taha Okla - 08-07-23

لو كل الأزرار التي تريد تلوينها فيها شيء مشترك غير موجود في غيرها ..
مثلاً كلها تحتوي في تسميتها (خاصية (Name)) الكلمة ("BTNRG")
فيصبح الكود المسؤول عن تلوين الأزار :
كود :
Dim xBt = From bt In Controls.OfType(Of ButtonBase)()
           Where bt.Name.Contains("BTNRG")
           Select bt
For Each b1 In xBt
   b1.BackColor = Color.FromArgb(255, 200, 200, 20)
Next
 
ملاحظة1 : هذا الكود حساس لحالة الأحرف، فإن تغير شكل الحرف (من كبير لصغير أو العكس) توقف عن العمل..
فيفضل حينها استخدام خاصية شكل الحرف الموحد بإستخدام خاصية (ToUpper)  أو (ToLower)..


ملاحظة 2 : هنالك أكواد أفضل من هذا  بكثير وفيها إبداع ملحوظ،، ولكن تحتاج أن تبحث ضمن المنتدى وتجرب بنفسك ..