Click here to Skip to main content
15,895,777 members
Articles / Desktop Programming / Windows Forms

Controls Library: Extended ListView with Column Mapping

Rate me:
Please Sign up or sign in to vote.
4.86/5 (29 votes)
27 Mar 2014CPOL5 min read 83.1K   7.6K   110  
Docking windows container, extended listview, extended property editor.
using System.Drawing;
using System.Windows.Forms;
using System;
using dwf.tool;

namespace dwf.gui
{
    public class CellEditorImage : CellEditorText
    {
        public CellEditorImage()
            : base()
        {
            //Color r = Color.FromArgb((int)123);
        }
        
        protected override void OnControlValueChanged(object sender, EventArgs e)
        {
            base.OnControlValueChanged(sender, e);
            control.Image = FormatValue(control.Value) as Image;
        }

        public override object ParseValue(object obj, object dataSource, Type valueType)
        {
            return base.ParseValue(obj, dataSource, valueType);
        }

        public override object FormatValue(object obj, object dataSource, Type valueType)
        {
            if (obj == null)
                return null;
            else if (obj is Image)
                return obj;
            else if (obj is Icon)
                return obj;
            else
                return base.FormatValue(obj, dataSource, valueType);
        }

        public override void InitializeEditControl(IPEditor ccontrol, object obj, object dataSource, Type valueType, bool readOnly)
        {
            base.InitializeEditControl(ccontrol, obj, dataSource, valueType, readOnly);
            // = null;// control.GetCacheControl<PictureBox>("PictureBox");
            //((PictureBox)control.EditControl).Image = FormatValue(obj) as Image;
            control.Image = FormatValue(obj, dataSource, valueType) as Image;
            if (_listDataSource == null)
            {
                tool.Target = control.GetCacheControl<ImageEditor>("ImageEditor");
                ((ImageEditor)tool.Target).Image = FormatValue(obj, dataSource, valueType) as Image;
                ((ImageEditor)tool.Target).FormClosing += new FormClosingEventHandler(OnImageFormClosing);
            }
        }

        protected virtual void OnImageFormClosing(object sender, FormClosingEventArgs e)
        {
            if (((ImageEditor)tool.Target).DialogResult == DialogResult.OK)
            {
                control.Value = ParseValue(((ImageEditor)tool.Target).Image, item, type);
                control.Parent.Invalidate();
                //((PictureBox)_control.EditControl).Image = _control.Value as Image;
            }
        }

        public override void FreeEditControl()
        {
            if (tool.Target is ImageEditor)
            {
                ((ImageEditor)tool.Target).FormClosing -= new FormClosingEventHandler(OnImageFormClosing);
                ((ImageEditor)tool.Target).DialogResult = DialogResult.None;
            }
            base.FreeEditControl();
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Kazakstan Kazakstan
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions