私がやろうとしているのは、コントロールをに追加するために必要なキャストを行うことです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);