Thanks Jose. That worked perfectly but currently facing another problem. I am able to configure the columns for the grid during design time and also the columns are visible during runtime as per configured. But when coming back to design time and attempting to display the editor dialog its showing an error "Unable to cast object of type WindowsApplication1.SYColumns to type WindowsApplication1.SYColumns". SYColumns is the custom property type for the control. The code snippet where the error occurred is as follows with bold:
public
override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
if (context != null && provider != null)
{
//ssdb = ((SSDBCombo)context.Instance);
WindowsApplication1.
UserControlForm m_EditControl = new UserControlForm();
//SSDBCombo ssdb = context.Instance as SSDBCombo;
SYColumns SyCol = (SYColumns)value; //ERROR OCCURRED HERE
//ssdb.DBColumnsCols = SyCol;
//MessageBox.Show("EditValue 1");
IEditiorService = (
IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
if (IEditiorService != null)
{
MessageBox.Show("5");
//ssdb.DBColumnsCols = SyCol;
//MessageBox.Show("EditValue 4");
if (value != null)
{
MessageBox.Show("6");
MessageBox.Show(SyCol.ToString());
//ssdb.DBColumnsCols = (SYColumns)value;
if (SyCol.ColHeaderText != null & SyCol.ColNames != null)
{
MessageBox.Show("7");
//MessageBox.Show(SyCol.ColNames.Split(new char[] { ',' }).Length.ToString());
if (SyCol.ColNames.Trim() != "" && SyCol.ColHeaderText.Trim() != "")
{
for (int h = 0; h < SyCol.ColNames.Split(new char[] { ',' }).Length; h++)
{
if (SyCol.ColNames.Split(new char[] { ',' })[h].ToString() != "")
{
m_EditControl.lstCols.Items.Add(SyCol.ColNames.Split(
new char[] { ',' })[h].ToString() + "-" + SyCol.ColHeaderText.Split(new char[] { ',' })[h].ToString());
}
//MessageBox.Show(SyCol.ColNames.Split(new char[] { ',' })[h].ToString());
}
}
}
}
//m_EditControl.ShowDialog();
IEditiorService.ShowDialog(m_EditControl);
//if (IEditiorService.ShowDialog(m_EditControl) == DialogResult.OK)
//{
if (m_EditControl.lstCols.Items.Count > 0)
{
SyCol.ColNames =
"";
SyCol.ColHeaderText =
"";
for (int z = 0; z < m_EditControl.lstCols.Items.Count; z++)
{
SyCol.ColNames = SyCol.ColNames + m_EditControl.lstCols.Items[z].ToString().Substring(0, m_EditControl.lstCols.Items[z].ToString().IndexOf(
"-")) + ",";
SyCol.ColHeaderText = SyCol.ColHeaderText + m_EditControl.lstCols.Items[z].ToString().Substring(m_EditControl.lstCols.Items[z].ToString().IndexOf(
"-") + 1) + ",";
SyCol.ColNames = SyCol.ColNames.Trim();
SyCol.ColHeaderText = SyCol.ColHeaderText.Trim();
}
SyCol.ColNames = SyCol.ColNames.TrimEnd(
new char[] { ',' });
SyCol.ColHeaderText = SyCol.ColHeaderText.TrimEnd(
new char[] { ',' });
SyCol.ColsCount = SyCol.ColNames.Split(
new char[] { ',' }).Length;
}
//}
ConfigureDataGrid((
SSDBCombo)context.Instance);
return SyCol;
}
}
return base.EditValue(context, provider, value);
}
Kindly assist in resolving this issue.