내가하려는 것은 Ext.Net.Panel
에 내 컨트롤을 추가하는 데 필요한 캐스트입니다.일부 유형이 할당 된 변수로 캐스팅
이 내 코드의 예는 다음과 같습니다
Ext.Net.Panel panel = new Ext.Net.Panel();
Control control = (Control) null;//here can be any Ext.Net type as well as NumeticField for example Ext.Net.TextArea and so on
switch (infoAttribute.Type)
{
case PropertyTypeAttrib.Text:
control = (Control)new Ext.Net.TextField();
((TextField)control).FieldLabel = infoAttribute.HeadLine;
control.ID = propertyHelper.Name;
//panel.Items.Add((TextField)control);
typeToCast = typeof (TextField);
break;
case PropertyTypeAttrib.FileUrl:
control = (Control) new Ext.Net.HyperLink();
control.ID = propertyHelper.Name;
((Ext.Net.Label) control).FieldLabel = infoAttribute.HeadLine;
//panel.Items.Add((Ext.Net.HyperLink) control);
typeToCast = typeof (Ext.Net.HyperLink);
break;
case PropertyTypeAttrib.Enum:
control = (Control) new MMPControls.Web.ComboBoxEnumExt();
((MMPControls.Web.ComboBoxEnumExt) control).EnumerationTypeName =
propertyHelper.PropertyType.Name;
control.ID = propertyHelper.Name;
((MMPControls.Web.ComboBoxEnumExt) control).FieldLabel = infoAttribute.HeadLine;
//panel.Items.Add((MMPControls.Web.ComboBoxEnumExt) control);
typeToCast = typeof (MMPControls.Web.ComboBoxEnumExt);
break;
case PropertyTypeAttrib.Date:
control = new MMPControls.Web.DateSelect();
control.ID = propertyHelper.Name;
//panel.Items.Add(
//(MMPControls.Web.DateSelect) control);
//panel.Items.Add((MMPControls.Web.DateSelect)control);
typeToCast = typeof (MMPControls.Web.DateSelect);
break;
case PropertyTypeAttrib.DateTime:
control = new MMPControls.Web.DateSelect();
control.ID = propertyHelper.Name;
//panel.Items.Add(
//(MMPControls.Web.DateSelect)control);
typeToCast = typeof (MMPControls.Web.DateSelect);
break;
case PropertyTypeAttrib.TextInteger:
control = (Control)new Ext.Net.NumberField();
((NumberField)control).AllowDecimals = false;
((NumberField)control).MinValue = 0;
((Ext.Net.NumberField)control).FieldLabel = infoAttribute.HeadLine;
control.ID = propertyHelper.Name;
//panel.Items.Add(
//(Ext.Net.NumberField) control);
typeToCast = typeof (Ext.Net.NumberField);
break;
case PropertyTypeAttrib.IList:
//TODO:
break;
case PropertyTypeAttrib.ImageUrl:
control = (Control)new Ext.Net.Image();
control.ID = propertyHelper.Name;
((Ext.Net.Image)control).FieldLabel = infoAttribute.HeadLine;
//panel.Items.Add((Ext.Net.Image) control);
typeToCast = typeof (Ext.Net.Image);
break;
case PropertyTypeAttrib.TextFractional:
control = (Control)new Ext.Net.NumberField();
((NumberField)control).AllowDecimals = true;
((NumberField)control).DecimalPrecision = infoAttribute.Fractional;
((NumberField)control).MinValue = 0;
((Ext.Net.NumberField)control).FieldLabel = infoAttribute.HeadLine;
control.ID = propertyHelper.Name;
//panel.Items.Add(
//(Ext.Net.NumberField) control);
typeToCast = typeof (Ext.Net.NumberField);
break;
case PropertyTypeAttrib.TextLarge:
control = (Control)new Ext.Net.TextArea();
((TextArea)control).FieldLabel = infoAttribute.HeadLine;
control.ID = propertyHelper.Name;
//panel.Items.Add((TextArea)control);
typeToCast = typeof (TextArea);
break;
}
panel.Items.Add((typeToCast)control);//that's what i need to do.
라인 panel.Items.....
에서 오류가
사람이 전에 비슷한 일을했다 typeToCast이 기호를 해결할 수있어? 해결 된 사전 :
에 대한
감사 : 내가 Component
유형 내 준비 제어를 주조했다 않았다 무엇
. panel.Items.Add((Component)control);
은 동적으로 내 양식을하고 난 harry180 @이 – harry180
될 것입니다 어떤 종류의 알 수 없기 때문에 뭐 할거야? 좀 더 적합한 예로 바꾸는 것이 좋습니다. 나는 당신이'Control'에 던져 넣어야 할 필요가 있음을 알 수 있습니다. 그러나 그게 모두가되어야합니다 ... –
지금 제가하는 예제는 제가하려고하는 것을 보여 주었다고 생각합니다 :) – harry180