Доступ к свойствам объекта по его имени

MuzhikGTA

Всем привет.. В общем такой вот вопрос. Мне в процессе выполнения программы нужно изменять цвет объекта на форме, при этом я хочу использовать RGB. Но если я каждый раз буду использовать длиннющее выражения для изменения цвета по RGB - большая часть кода уйдет именно под это дело. Пример выражения:
ИмяОъектаНаФорме.BackColor = System.Drawing.Color.FromArgb(CType(CType(цветR, Byte), Integer), CType(CType(цветG, Byte), Integer), CType(CType(цветB, Byte), Integer))
Так вот, я хочу написать функцию, которой я буду передавать имя объекта и значения RGB, а функция будет применять эти значения к объекту, имя которого было передано. Чёт типа этого:
Function BackColor(r As String, g As String, b As String, obj As String)
obj.BackColor = System.Drawing.Color.FromArgb(CType(CType(R, Byte), Integer), CType(CType(G, Byte), Integer), CType(CType(B, Byte), Integer))
End Function
Указанный пример, истессно, не работает. Я его написал чисто, чтобы объяснить, что я хочу сделать. Вопрос вроде не сложный, но я всеравно не допру, как заставить функцию найти объект по имени для изменения нужного свойства. Заранее спасибо за помощь.
4 ответа

MuzhikGTA

MuzhikGTA,
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        setBackColor(Button1, Color.Aquamarine)
        setBackColor(Label1, Color.Red)
    End Sub
    Private Sub setBackColor(ByVal control As Control, ByVal color As Color)
        control.BackColor = color
    End Sub
Или так
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        setBackColor(Button1, 1, 2, 3)
        setBackColor(Label1, 3, 4, 5)
    End Sub
    Private Sub setBackColor(ByVal control As Control, ByVal r As Integer, ByVal g As Integer, ByVal b As Integer)
        control.BackColor = System.Drawing.Color.FromArgb(r, g, b)
    End Sub
И почитай про Sub и Function


MuzhikGTA

MuzhikGTA, вот ещё вариант. ----------------------------- В шапке модуля напиши.
Public clr1 As Color = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer))
Public clr2 As Color = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer))
И используй переменные.
Me.Label1.BackColor = clr1
Me.Label2.BackColor = clr2


MuzhikGTA

Наверно вы имели ввиду вот это - обращение к контролу по его имени типа String?:
Function SetBackColor(R As integer, G As integer, B As integer, objName As String)
     Me.Controls(objName).BackColor = System.Drawing.Color.FromArgb(R, G, B)
End Function


MuzhikGTA

Yury Komar, Мне помог и первый вариант.. Ваш же способ - именно то, что я хотел)