2015-10-02 1 views
1

Мы хотим динамически (в зависимости от XML-файла) установить BackColor элемента управления в Windows Forms.CallByName, set BackColor

Я только что попробовал CallByName -Метод с CallType.Method.

CallByName(ColorObject, "FromName", CallType.Method, "Red")

Когда я хочу, чтобы выполнить «FromName» метод не работает, потому что мне это нужно, как это «Color.FromName».

CallByName получил объект из класса «Цвет», но все еще не работает. Класс «Цвет» импортируется.

Кто-нибудь понял, что я делаю неправильно или как могу решить эту проблему?

ответ

0

Непонятно, находятся ли имя элемента управления и цвет в Xml, поэтому я покрою оба.

Что вы хотите Controls.Find и Color.FromName

Так комбинируя вы можете сделать что-то вроде этого:

Dim ctl = Me.Controls.Find("Controlname from Xml", True) 'omit the True if you don't need to search child controls as it will be faster 
Dim myColour = Color.FromName("ColourName From Xml") 
ctl.backColor = myColour 

Обратите внимание, что название цвета должен быть один из стандартных цветов .Net в KnownColor Enum в противном случае это выкинет исключение

+0

Спасибо :) Но нам нужно динамически выбирать метод. Мы решили эту проблему с помощью «CallByName», чтобы мы могли извлечь строку из XML-файла и вызвать подходящий метод. Проблема с «FromName» заключается в том, что перед ним нужно «Цвет» (Color.FromName). И с CallByName мы не можем экспортировать «Color.FromName» в качестве String. Таким образом, CallByName не находит никакого метода. – Dyrdek