hi aravindh...i am facing same problem...
if u have got any solution please let me know.

I have added it on form and trying to initiatize it.but it fails at
GetFormattedValue function. it throws exception in its return
statement. FormatException.


On Apr 20, 11:56 am, Aravindh Kathir <[email protected]> wrote:
> Hi,
>
>       I am Developing a Windows Application in VB.NET. In Which one of the
> Windows Form will Display data in DataGridView Control. I Need a Checked
> DropDownList Column in DataGridView.
>
> For this process i have Created a Custom Control (Checked DropDownList
> Control), But if i add that control in to the
> DataGridview Control i am unable to access that control in Datagridview both
> inGUI and Code.
> The Following are code, please point out the problem that i have done..
>
> / *------------------------------------------------------   Code Starts
> Here 
> ---------------------------------------------------------------------------­-------------------
> * /
>
> using System;
>
> using System.Collections.Generic;
>
> using System.Text;
>
> using System.Windows.Forms;
>
> using System.Collections;
>
> using System.Drawing;
>
> namespace dgdCheckedListBox
>
> {
>
> public class CheckedListBoxColumn : DataGridViewColumn
>
> {
>
> public CheckedListBoxColumn()
>
> : base(new CheckedListBoxCell())
>
> {
>
> }
>
> public override DataGridViewCell CellTemplate
>
> {
>
> get
>
> {
>
> return base.CellTemplate;
>
> }
>
> set
>
> {
>
> if (value != null &&
>
> !value.GetType().IsAssignableFrom(typeof(CheckedListBoxCell)))
>
> {
>
> throw new InvalidCastException("Must be a CheckedListBoxCell");
>
> }
>
> base.CellTemplate = value;
>
> }
> }
> }
>
> public class CheckedListBoxCell : DataGridViewCell
>
> {
>
> public CheckedListBoxCell()
>
> : base()
>
> {
>
> }
>
> public override void InitializeEditingControl(int rowIndex, object
>
> initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
>
> {
>
> // Set the value of the editing control to the current cell value.
>
> base.InitializeEditingControl(rowIndex, initialFormattedValue,
>
> dataGridViewCellStyle);
>
> CheckedListBoxEditingControl ctl =
>
> DataGridView.EditingControl as CheckedListBoxEditingControl;
>
> InitializeCheckedListBox(ctl, (ICollection)this.FormattedValue);
>
> }
>
> private void InitializeCheckedListBox(CheckedListBox ctrl, ICollectionvalue)
>
> {
>
> ctrl.Items.Clear();
>
> foreach (object obj in value)
>
> {
>
> ctrl.Items.Add(obj.ToString());
>
> }
>
> ctrl.Tag = this.Value;
>
> }
>
> public override Type EditType
>
> {
>
> get
>
> {
>
> return typeof(CheckedListBoxEditingControl);
>
> }
> }
>
> protected override object GetFormattedValue(object value, int rowIndex, ref
> DataGridViewCellStyle cellStyle,
> System.ComponentModel.TypeConvertervalueTypeConverter,
> System.ComponentModel.
> TypeConverter formattedValueTypeConverter, 
> DataGridViewDataErrorContextscontext)
>
> {
>
> if (value == null)
>
> {
>
> return new List<object>();
>
> }
>
> return base.GetFormattedValue(value, rowIndex, ref cellStyle,
> valueTypeConverter, formattedValueTypeConverter, context);
>
> }
>
> public override Type FormattedValueType
>
> {
>
> get
>
> {
>
> return typeof(ICollection);
>
> }
> }
>
> public override Type ValueType
>
> {
>
> get
>
> {
>
> return typeof(ICollection);
>
> }
> }
>
> public CheckedListBox internalControl;
>
> //private ComboBox lst = new ComboBox();
>
> private CheckComboBoxTest.CheckedComboBox chkdrop = new CheckComboBoxTest.
> CheckedComboBox();
>
> protected override void Paint(System.Drawing.Graphics graphics,
> System.Drawing.Rectangle clipBounds, System.Drawing.Rectangle cellBounds,
> int rowIndex, DataGridViewElementStates cellState, object value,
> objectformattedValue,
> string errorText, DataGridViewCellStyle cellStyle,
> DataGridViewAdvancedBorderStyle advancedBorderStyle,
> DataGridViewPaintPartspaintParts)
>
> {
>
> base.Paint(graphics, clipBounds, cellBounds, rowIndex, cellState, value,
> formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
>
> graphics.FillRectangle(new SolidBrush(cellStyle.BackColor), cellBounds);
>
> if (internalControl == null)
>
> {
>
> internalControl = new CheckedListBox();
>
> }
>
> internalControl.Items.Clear();
>
> chkdrop.Items.Clear();
>
> ICollection collection = value as ICollection;
>
> //if (collection != null)
>
> {
>
> //foreach (object obj in collection)
>
> {
>
> internalControl.Items.Add("obj",true );
>
> internalControl.Items.Add("obj1");
>
> chkdrop.Items.Add("hi",true);
>
> chkdrop.Items.Add("hi1",true);
>
> //chkdrop.DroppedDown = true;
>
> //lst.Items.Add("Hisdfsdf");
>
> //lst.Items.Add("ghjgjhg");
>
> }
>
> {
>
> }
>
> Bitmap bmp = new Bitmap(cellBounds.Width, cellBounds.Height);
>
> //internalControl.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width,
> bmp.Height));
>
> chkdrop.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
>
> //lst.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
>
> graphics.DrawImage(bmp, cellBounds, new Rectangle(0, 0, bmp.Width,
> bmp.Height), GraphicsUnit.Pixel);
>
> }
> }
>
> protected override void OnClick(DataGridViewCellEventArgs e)
>
> {
>
> //base.DataGridView.BeginEdit(false);
>
>  //base.OnClick(e);
>
> }
> }
>
> class CheckedListBoxEditingControl : CheckedListBox,
> IDataGridViewEditingControl
>
> {
>
> DataGridView dataGridView;
>
> private bool valueChanged = false;
>
> int rowIndex;
>
> public CheckedListBoxEditingControl()
>
> {
>
> }
>
> // Implements the IDataGridViewEditingControl.EditingControlFormattedValue
>
> // property.
>
> public object EditingControlFormattedValue
>
> {
>
> get
>
> {
>
> return this.Tag;
>
> }
>
> set
>
> {
>
> // this.Tag = value;
>
> }
> }
>
> // Implements the
>
> // IDataGridViewEditingControl.GetEditingControlFormattedValue method.
>
> public object GetEditingControlFormattedValue(
>
> DataGridViewDataErrorContexts context)
>
> {
>
> return EditingControlFormattedValue;
>
> }
>
> // Implements the
>
> // IDataGridViewEditingControl.ApplyCellStyleToEditingControl method.
>
> public void ApplyCellStyleToEditingControl(
>
> DataGridViewCellStyle dataGridViewCellStyle)
>
> {
>
> this.Font = dataGridViewCellStyle.Font;
>
> this.ForeColor = dataGridViewCellStyle.ForeColor;
>
> this.BackColor = dataGridViewCellStyle.BackColor;
>
> }
>
> // Implements the IDataGridViewEditingControl.EditingControlRowIndex
>
> // property.
>
> public int EditingControlRowIndex
>
> {
>
> get
>
> {
>
> return rowIndex;
>
> }
>
> set
>
> {
>
> rowIndex = value;
>
> }
> }
>
> // Implements the IDataGridViewEditingControl.EditingControlWantsInputKey
>
> // method.
>
> public bool EditingControlWantsInputKey(
>
> Keys key, bool dataGridViewWantsInputKey)
>
> {
>
> // Let the DateTimePicker handle the keys listed.
>
> switch (key & Keys.KeyCode)
>
> {
>
> case Keys.Left:
>
> case Keys.Up:
>
> case Keys.Down:
>
> case Keys.Right:
>
> case Keys.Home:
>
> case Keys.End:
>
> case Keys.PageDown:
>
> case Keys.PageUp:
>
> return true;
>
> default:
>
> return !dataGridViewWantsInputKey;
>
> }
> }
>
> // Implements the IDataGridViewEditingControl.PrepareEditingControlForEdit
>
> // method.
>
> public void PrepareEditingControlForEdit(bool selectAll)
>
> {
>
> // No preparation needs to be done.
>
> }
>
> // Implements the IDataGridViewEditingControl
>
> // .RepositionEditingControlOnValueChange property.
>
> public bool RepositionEditingControlOnValueChange
>
> {
>
> get
>
> {
>
> return false;
>
> }
> }
>
> // Implements the IDataGridViewEditingControl
>
> // .EditingControlDataGridView property.
>
> public DataGridView EditingControlDataGridView
>
> {
>
> get
>
> {
>
> return dataGridView;
>
> }
>
> set
>
> {
>
> dataGridView = value;
>
> }
> }
>
> // Implements the IDataGridViewEditingControl
>
> // .EditingControlValueChanged property.
>
> public bool EditingControlValueChanged
>
> {
>
> get
>
> {
>
> return valueChanged;
>
> }
>
> set
>
> {
>
> valueChanged = value;
>
> }
> }
>
> // Implements the IDataGridViewEditingControl
>
> // .EditingPanelCursor property.
>
> public Cursor EditingPanelCursor
>
> {
>
> get
>
> {
>
> return base.Cursor;
>
> }
> }
> }
> }
>
>  / *------------------------------------------------------   Code Ends
> Here 
> ---------------------------------------------------------------------------­-------------------
> * /
>
> Thanks
>
> Regards
> Aravindh.K

Reply via email to