public class FormEditorCombo : UITypeEditor
{
Boolean m_Escaped;
IWindowsFormsEditorService IEditiorService;
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
string strColNames = "";
string strColHeader = "";
int iColCount = 0;
string sColNames = "";
string sColHeader = "";
if (value == null)
MessageBox.Show("Value is nothing");
if (context != null && provider != null)
{
WindowsApplication1.UserControlForm m_EditControl = new UserControlForm();
IEditiorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
if (IEditiorService != null)
{
if (value != null)
{
PropertyDescriptorCollection pdc = context.PropertyDescriptor.GetChildProperties();
sColNames = pdc[2].GetValue(value).ToString();
sColHeader = pdc[1].GetValue(value).ToString();
int i = (int)pdc[0].GetValue(value);
iColCount = i;
if (sColHeader != null & sColNames != null)
{
if (sColNames.Trim() != "" && sColHeader.Trim() != "")
{
for (int h = 0; h < sColNames.Split(new char[] { ',' }).Length; h++)
{
if (sColNames.Split(new char[] { ',' })[h].ToString() != "")
{
m_EditControl.lstCols.Items.Add(sColNames.Split(new char[] { ',' })[h].ToString() + "-" + sColHeader.Split(new char[] { ',' })[h].ToString());
}
}
}
}
}
SYColumns SYCOL = new SYColumns(sColNames, sColHeader, iColCount);
m_EditControl.SYCol = SYCOL;
IEditiorService.ShowDialog(m_EditControl);
SSDBCombo ssdb = context.Instance as SSDBCombo;
if (ssdb == null)
ssdb = new SSDBCombo();
ssdb.DBColumnsCols = m_EditControl.SYCol;
return m_EditControl.SYCol; //The error occurs here
}
}
return base.EditValue(context, provider, value);
}
public class UserTypeConverter : ExpandableObjectConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == typeof(string) || sourceType == typeof(WindowsApplication1.SYColumns))
{
return true;
}
return base.CanConvertFrom(context, sourceType);
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if (destinationType == typeof(string) | destinationType == typeof(InstanceDescriptor))
{
return true;
}
return base.CanConvertTo(context, destinationType);
}
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
SYColumns cCol = new SYColumns();
if (value == null)
return cCol;
if (value is string)
{
string[] strValues = value.ToString().Split(new char[] { ';' });
cCol.ColsCount = int.Parse(strValues[0].ToString().Substring(strValues[0].IndexOf(":") + 1).Trim());
cCol.ColHeaderText = strValues[2].ToString().Substring(strValues[2].IndexOf(":") + 1).Trim();
cCol.ColNames = strValues[1].ToString().Substring(strValues[1].IndexOf(":") + 1).Trim();
return cCol;
return base.ConvertFrom(context, culture, value);
}
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
{
string strRet = "";
if (value.GetType().GetProperty("ColNames").GetValue(value, null) == null)
{
value.GetType().GetProperty("ColsCount").SetValue(value, 0, null);
value.GetType().GetProperty("ColNames").SetValue(value, "NA", null);
value.GetType().GetProperty("ColHeaderText").SetValue(value, "NA", null);
return "Items: " + "0" + ";ColNames: " + "NA" + ";ColHeaders: " + "NA";
}
string ColNames = value.GetType().GetProperty("ColNames").GetValue(value, null).ToString();
string HeaderText = value.GetType().GetProperty("ColHeaderText").GetValue(value, null).ToString();
int ColsCount = int.Parse(value.GetType().GetProperty("ColsCount").GetValue(value, null).ToString());
value.GetType().GetProperty("ColsCount").SetValue(value, ColsCount, null);
value.GetType().GetProperty("ColNames").SetValue(value, ColNames, null);
value.GetType().GetProperty("ColHeaderText").SetValue(value, HeaderText, null);
strRet = "Items: " + value.GetType().GetProperty("ColsCount").GetValue(value, null).ToString() + ";ColNames: " + value.GetType().GetProperty("ColNames").GetValue(value, null).ToString() + ";ColHeaders: " + value.GetType().GetProperty("ColHeaderText").GetValue(value, null).ToString();
return strRet;
}
public override bool GetCreateInstanceSupported(ITypeDescriptorContext context)
{
return true;
}
public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues)
{
SYColumns sycol = new SYColumns();
sycol.ColHeaderText = (string)propertyValues["ColHeaderText"];
sycol.ColNames = (string)propertyValues["ColNames"];
sycol.ColsCount = (int)propertyValues["ColsCount"];
return sycol;
}
}
[TypeConverter(typeof(UserTypeConverter))]
public class SYColumns
{}
}
From http://www.developmentnow.com/g/32_0_0_0_0_0/dotnet-framework-windowsforms-designtime.htm
Posted via DevelopmentNow.com Groups
http://www.developmentnow.com/g/