■ DevExpress 입력 컨트롤을 상속하는 방법을 보여준다. (예 : TextEdit)
DevExpress 입력 컨트롤들은 대부분 …Edit로 끝나는 타입명을 갖는다.
…Edit로 명칭이 끝나는 컨트롤들은 Properties라는 속성을 갖는데 RepositoryItemTextEdit와 같은 타입명을 갖고 있다.
RepositoryItem…Edit 타입들은 입력 컨트롤의 실질적인 처리 기능을 갖는다.
그리드 컨트롤 등에서 내부 에디터로 사용되기 때문에 이들 타입을 상속한 컨트롤을 정의하면 그리드 컨트롤에서도 동일하게 사용할 수 있는 장점이 있다.
따라서 컨트롤 상속시 반드시 지정해야 하는 코드를 TextEdit 상속을 기준으로 아래와 같이 소개하며 파생 클래스의 추가 기능은 생략한다.
▶ RepositoryItemTextEdit 상속 클래스 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
using DevExpress.Accessibility; using DevExpress.XtraEditors.Drawing; using DevExpress.XtraEditors.Registrator; using DevExpress.XtraEditors.Repository; using DevExpress.XtraEditors.ViewInfo; public class RepositoryItemIntegerEditor : RepositoryItemTextEdit { public override string EditorTypeName { get { return "IntegerEditor"; } } static RepositoryItemIntegerEditor() { Register(); } public static void Register() { EditorRegistrationInfo.Default.Editors.Add ( new EditorClassInfo ( "IntegerEditor", typeof(IntegerEditor), typeof(RepositoryItemIntegerEditor), typeof(TextEditViewInfo), new TextEditPainter(), true, EditImageIndexes.TextEdit, typeof(TextEditAccessible) ) ); } } |
▶ TextEdit 상속 클래스 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System.ComponentModel; using DevExpress.XtraEditors; public class IntegerEditor : TextEdit { public override string EditorTypeName { get { return "IntegerEditor"; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public new RepositoryItemIntegerEditor Properties { get { return base.Properties as RepositoryItemIntegerEditor; } } static IntegerEditor() { RepositoryItemIntegerEditor.Register(); } } |