منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تغيير لون مجموعه ازرار
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
استخدم هذا الكود لتغيير مجموعة ازرار من 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 في الكود كان يظهر خطا لم اعرف سببة
للتحكم بمجموعة عناصر قم بإستخدام  

For Each...Next : Statement

المنتدى مليء بالكثير من الامثلة
ابحث وستجد أكثر مما ترغب به..
فقط عدل الكود لما يناسب مشروعك..
بحث مالقيت  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
لو كل الأزرار التي تريد تلوينها فيها شيء مشترك غير موجود في غيرها ..
مثلاً كلها تحتوي في تسميتها (خاصية (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 : هنالك أكواد أفضل من هذا  بكثير وفيها إبداع ملحوظ،، ولكن تحتاج أن تبحث ضمن المنتدى وتجرب بنفسك ..