■ RepositoryItemTextEdit 클래스 : 커스텀 에디터 만들기

------------------------------------------------------------------------------------------------------------------------


TestProject.zip


RepositoryItemCustomEdit.cs

 

 

using DevExpress.Accessibility;

using DevExpress.XtraEditors.Drawing;

using DevExpress.XtraEditors.Repository;

using DevExpress.XtraEditors.Registrator;

using DevExpress.XtraEditors.ViewInfo;

 

namespace TestProject

{

    /// <summary>

    /// 저장소 항목 커스텀 에디터

    /// </summary>

    [UserRepositoryItem("RegisterCustomEdit")]

    public class RepositoryItemCustomEdit : RepositoryItemTextEdit

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region Field

 

        /// <summary>

        /// 커스텀 에디터명

        /// </summary>

        public const string CustomEditName = "CustomEdit";

 

        #endregion

 

        ////////////////////////////////////////////////////////////////////////////////////////// Private

 

        #region Field

 

        /// <summary>

        /// 디폴트 모드 사용 여부

        /// </summary>

        private bool useDefaultMode;

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 에디터 타입명 - EditorTypeName

 

        /// <summary>

        /// 에디터 타입명

        /// </summary>

        public override string EditorTypeName

        {

            get

            {

                return CustomEditName;

            }

        }

 

        #endregion

        #region 디폴트 모드 사용 여부 - UseDefaultMode

 

        /// <summary>

        /// 디폴트 모드 사용 여부

        /// </summary>

        public bool UseDefaultMode

        {

            get

            {

                return this.useDefaultMode;

            }

            set

            {

                if(this.useDefaultMode != value)

                {

                    this.useDefaultMode = value;                        

 

                    OnPropertiesChanged();

                }

            }

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Static

 

        #region 생성자 - RepositoryItemCustomEdit()

 

        /// <summary>

        /// 생성자

        /// </summary>

        static RepositoryItemCustomEdit()

        {

            RegisterCustomEdit();

        }

 

        #endregion

 

        ////////////////////////////////////////////////////////////////////////////////////////// Instance

        //////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - RepositoryItemCustomEdit()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public RepositoryItemCustomEdit()

        {

            this.useDefaultMode = true;

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Public

 

        #region 커스텀 에디터 등록하기 - RegisterCustomEdit()

 

        /// <summary>

        /// 커스텀 에디터 등록하기

        /// </summary>

        public static void RegisterCustomEdit()

        {

            EditorRegistrationInfo.Default.Editors.Add

            (

                new EditorClassInfo

                (

                    CustomEditName,

                    typeof(CustomEdit),

                    typeof(RepositoryItemCustomEdit),

                    typeof(TextEditViewInfo),

                    new TextEditPainter(),

                    true,

                    null,

                    typeof(TextEditAccessible)

                )

            );

        }

 

        #endregion

 

        ////////////////////////////////////////////////////////////////////////////////////////// Instance

        //////////////////////////////////////////////////////////////////////////////// Public

 

        #region 할당하기 - Assign(item)

 

        /// <summary>

        /// 할당하기

        /// </summary>

        /// <param name="item">저장소 항목</param>

        public override void Assign(RepositoryItem item)

        {

            BeginUpdate();

 

            try

            {

                base.Assign(item);

 

                RepositoryItemCustomEdit source = item as RepositoryItemCustomEdit;

 

                if(source == null)

                {

                    return;

                }

 

                this.useDefaultMode = source.UseDefaultMode;

            }

            finally

            {

                EndUpdate();

            }

        }

 

        #endregion

    }

}

 

 

CustomEdit.cs

 

 

using System.ComponentModel;

 

using DevExpress.XtraEditors;

 

namespace TestProject

{

    /// <summary>

    /// 커스텀 에디터

    /// </summary>

    [ToolboxItem(true)]

    public class CustomEdit : TextEdit

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 에디터 타입명 - EditorTypeName

 

        /// <summary>

        /// 에디터 타입명

        /// </summary>

        public override string EditorTypeName

        {

            get

            {

                return RepositoryItemCustomEdit.CustomEditName;

            }

        }

 

        #endregion

        #region 프로퍼티 - Properties

 

        /// <summary>

        /// 프로퍼티

        /// </summary>

        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]

        public new RepositoryItemCustomEdit Properties

        {

            get

            {

                return base.Properties as RepositoryItemCustomEdit;

            }

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Static

 

        #region 생성자 - CustomEdit()

 

        /// <summary>

        /// 생성자

        /// </summary>

        static CustomEdit()

        {

            RepositoryItemCustomEdit.RegisterCustomEdit();

        }

 

        #endregion

 

        ////////////////////////////////////////////////////////////////////////////////////////// Instance

        //////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - CustomEdit()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public CustomEdit()

        {

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요