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 4를 사용하는 경우
내가 널 (null) ("항목이"setAppearanceMethod.Invoke'에 무엇 @Algerto 반사 – BhushanK
을 사용하고, 새를 [] {item});'? – Alberto
를 사용하는 구현을 추가 @Bhushan 내가 .NET 3.5 – BhushanK