0
我正在開發一個Windows應用程序,並在我創造了共同的外觀一類和感應設置
CommonAppearance類代碼:如何投射對象在C#中使用反射運行時?
static void SetCommonAppearance(Label ctrl){ //some appearance setting code}
static void SetCommonAppearance(GridGroupingControl ctrl){ //some appearance setting code}
static void SetCommonAppearance(GradientPanel ctrl){ //some appearance setting code}
static void SetCommonAppearance(Form ctrl){ //some appearance setting code}
static void SetCommonAppearance(ComboBox ctrl){ //some appearance setting code}
static void SetCommonAppearance(CheckBox ctrl){ //some appearance setting code}
static void SetCommonAppearance(RadioButton ctrl){ //some appearance setting code}
static void SetCommonAppearance(Button ctrl){ //some appearance setting code}
public static void UseCommonTheme(Form form)
{
List<Control> lstControls = GetAllControls(form.Controls);
foreach (Control ctr in lstControls)
{
string temp2 = ctr.GetType().Name;
switch (temp2)
{
case "TextBox":
SetCommonAppearance((TextBox)ctr);
break;
case "AutoLabel":
SetCommonAppearance((Label)ctr);
break;
case "GridGroupingControl":
SetCommonAppearance((GridGroupingControl)ctr);
break;
case "ButtonAdv":
ApplyCustomTheme((ButtonAdv)ctr);
break;
case "CheckBoxAdv":
SetCommonAppearance((CheckBox)ctr);
break;
case "ComboBoxAdv":
SetCommonAppearance((ComboBox)ctr);
break;
case "RadioButtonAdv":
SetCommonAppearance((RadioButton)ctr);
break;
}
}
}
當有較少的控制應用程序設置的共同出現,但在這是可以接受的我的應用程序中使用了多種不同類型的控件。
在方法UseCommonTheme(Form form)
而不是使用開關的情況下我們可以使用反射來施放控件嗎?財產以後像
foreach (Control ctr in lstControls)
{
string controlType = ctr.GetType().Name;
SetCommonAppearance((class reference of 'controlType')ctr);
}
在此先感謝。
我使用.NET 3.5 – BhushanK
@Bhushan我補充說,使用反射 – Alberto
@Algerto什麼'setAppearanceMethod.Invoke是「項目」(空的實現,新[] {item});'? – BhushanK