{"id":236,"date":"2007-02-10T06:17:47","date_gmt":"2007-02-09T21:17:47","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=236"},"modified":"2017-01-31T19:49:44","modified_gmt":"2017-01-31T10:49:44","slug":"net-propertygrid-%ec%82%ac%ec%9a%a9%eb%b2%95%ec%97%90-%eb%8c%80%ed%95%9c-summary-iii","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=236","title":{"rendered":"[.NET] C#\uc744 \uc774\uc6a9\ud55c PropertyGrid \uc0ac\uc6a9\ubc95\uc5d0 \ub300\ud55c Summary <III>"},"content":{"rendered":"<p>\uc774\uc81c PropertyGrid \ucee8\ud2b8\ub864\uc758 \ud504\ub85c\ud37c\ud2b8\uc5d0 \uc774\ubbf8\uc9c0 \ucef4\ubcf4 \ub9ac\uc2a4\ud2b8\ub97c \ub2ec\uc544\ubcf4\uc790. \uc544\ub798\uc758 \uacb0\uacfc\ucc98\ub7fc \ub9d0\uc774\ub2e4.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1235721426.png\" alt=\"\" width=\"253\" height=\"283\" \/>\uba3c\uc800 PropertyGrid\uc758 SelectedObject\uc5d0 \ud560\ub2f9\ub420 \ud504\ub85c\ud37c\ud2f0\ub97c \uc815\uc758\ud560 \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\uc5b4 \uc8fc\uc5b4\uc57c \ud55c\ub2e4. \uc989 \uc6b0\ub9ac\uac00 \uc9c0\uae08 \uc815\uc758\ud560 \ud074\ub798\uc2a4\uc5d0\ub294 \uc704\uc758 \uadf8\ub9bc\uc5d0\uc11c\ucc98\ub7fc SourceType\uc774\ub77c\ub294 \ud504\ub85c\ud37c\ud2f0\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \ub2f4\uace0 \uc788\uc744 \uac83\uc774\ub2e4. \uc544\ub798\uc758 \ucf54\ub4dc\uac00 \ubc14\ub85c \uadf8 \ud074\ub798\uc2a4\uc774\ub2e4. \ud074\ub798\uc2a4 \uba85\uc740.. \ub531\ud788 \uc9c0\uc744\ub9cc\ud55c\uac8c \uc5c6\uc5b4 \uac1c\ub625\uc774\ud074\ub798\uc2a4\ub77c\uace0 \ud558\ub824\ub2e4\uac00 \uadf8\ub0e5 \uc58c\uc804\ud558\uac8c MyProperty\ub77c\uace0 \uc774\ub984 \ubd99\uc600\ub2e4. (C#\uc5d0\uc11c\ub294 \ud074\ub798\uc2a4\uba85\uc774\ub098 \ubcc0\uc218\uba85\uc744 \ud55c\uae00\ub85c \ud560 \uc218 \uc788\ub2e4)<\/p>\n<pre>public class MyProperty {\r\n    private MyType _type;\r\n\r\n    [Editor(typeof(MyPropertyGridEditor), \r\n            typeof(System.Drawing.Design.UITypeEditor))]\r\n    public MyType SourceType\r\n    {\r\n        get { return _type; }\r\n        set { _type = value; }\r\n    }\r\n}<\/pre>\n<p>\uc77c\ub2e8 MyType\uc774\ub77c\ub294 \uc0c8\ub85c\uc6b4 Type\uc774 \uc788\ub294\ub370, \uc774 Type\uc740 \uc544\ub798\uc640 \uac19\ub2e4.<\/p>\n<pre><code class=\"cpp\">public enum MyType { Left, Right, Up, Down };<\/code><\/pre>\n<p>\uc2e4\uc81c\ub85c PropertyGrid\uc5d0 \ub098\ud0c0\ub0a0 \ud504\ub85c\ud37c\ud2f0\uc758 \uac12\uc73c\ub85c Left, Right, Up, Down\uc774 \ub098\ud0c0\ub0a0 \uac83\uc774\ub2e4. \uc55e\uc11c \uc5b8\uae09\ud55c \uadf8\ub9bc\uc744 \ubcf4\uae30 \ubc14\ub780\ub2e4. \uadf8\ub9ac\uace0 \uc0c8\ub86d\uac8c \ub4f1\uc7a5\ud55c Attribute \uc9c0\uc2dc\uc790\ub85c Editor\uac00 \uc788\ub294\ub370, \uc774\ub294 \ud504\ub7ec\ud37c\ud2f0\uc758 \uac12\uc744 \ubcc0\uacbd\ud560 UI Editor\ub97c \uc9c0\uc815\ud558\uae30 \uc704\ud55c \uac83\uc774\uba70, \uc778\uc790\ub85c 2\uac1c\ub97c \ubc1b\ub294\ub2e4. \uccab\ubc88\uc9f8 \uc778\uc790\ub294 UITypeEditor\uc5d0\uc11c \uc0c1\uc18d\ubc1b\uc740, \uace7 \ubc14\ub85c \uc6b0\ub9ac\uac00 \uc0c8\ub86d\uac8c \uc815\uc758\ud560 \ud074\ub798\uc2a4\uba85\uc774\uace0, \ub450\ubc88\uc9f8 \uc778\uc790\ub294 \uadf8\ub0e5 UITypeEditor \ud074\ub798\uc2a4\uba85\uc744 \uc8fc\uba74\ub41c\ub2e4. \uc774\ub807\uac8c Editor \ud2b9\uc131\uc790\ub97c \ud504\ub85c\ud37c\ud2f0\uc5d0 \uc9c0\uc815\ud574\uc8fc\uba74 \uc9c0\uc815\ub41c \ud504\ub85c\ud37c\ud2f0\uc5d0 \ub300\ud55c \uac12\uc744 \uc124\uc815\ud558\uae30 \uc704\ud55c UI\uac00 \uc9c0\uc815\ub41c\ub2e4. \uc774 \ubc29\ubc95\uc740 \ucd94\ud6c4\uc5d0 \uc0c8\ub86d\uac8c \uc0b4\ud3b4\ubcfc \ud504\ub85c\ud37c\ud2f0\uc758 \uac12\uc744 \uc124\uc815\ud558\uae30 \uc704\ud574 \uc0ac\uc6a9\uc790 \uc815\uc758 UI\ub97c \ubd99\uc774\ub294 \ubc29\ubc95\uacfc \ub9e4\uc6b0 \uc720\uc0ac\ud558\ub2e4.<\/p>\n<p>\uc774\uc81c UITypeEditor\uc5d0\uc11c \uc0c1\uc18d\ubc1b\uc544 \uc0c8\ub86d\uac8c \uc815\uc758\ud55c MyPropertyGridEditor\uc5d0 \ub300\ud574\uc11c \uc0b4\ud3b4\ubcf4\ub3c4\ub85d\ud558\uc790.<\/p>\n<pre>public class MyPropertyGridEditor : UITypeEditor\r\n{\r\n    public override bool GetPaintValueSupported(\r\n        ITypeDescriptorContext context) {\r\n            return true;\r\n        }\r\n\r\n    public override void PaintValue(PaintValueEventArgs e) {\r\n        string m = this.GetType().Module.Name;\r\n        m = m.Substring(0, m.Length - 4);\r\n        ResourceManager resourceManager =\r\n            new ResourceManager(m + \".MyResource\", \r\n                Assembly.GetExecutingAssembly());\r\n\r\n        int i = (int)e.Value;\r\n        string sourceName = \"\";\r\n        switch (i) {\r\n            case ((int)MyType.Left): sourceName = \"left\"; break;\r\n            case ((int)MyType.Right): sourceName = \"right\"; break;\r\n            case ((int)MyType.Up): sourceName = \"up\"; break;\r\n            case ((int)MyType.Down): sourceName = \"down\"; break;\r\n        }\r\n\r\n        Bitmap newImage = (Bitmap)resourceManager.GetObject(sourceName);\r\n        Rectangle destRect = e.Bounds;\r\n\r\n        destRect.X = (e.Bounds.Width - newImage.Width) \/ 2;\r\n        destRect.Y = e.Bounds.Y - 1;\r\n        destRect.Width = newImage.Width;\r\n        destRect.Height = newImage.Height;\r\n\r\n        newImage.MakeTransparent();\r\n        e.Graphics.DrawImage(newImage, destRect);\r\n    }\r\n}<\/pre>\n<p>\uc81c\ubc95 \uae38\ub2e4? -o-; \u314b<\/p>\n<p>\uba3c\uc800 \uc774 \ud074\ub798\uc2a4\ub294 \ub450\uac1c\uc758 override\ub41c \ub9e4\uc11c\ub4dc\uac00 \uc788\ub2e4. \ud558\ub098\ub294 GetPaintValueSupported\uc774\uba70 \ub610 \ud558\ub098\ub294 PaintValue\uc774\ub2e4. \uc774 \ub450\uac1c\ub294 \uc885\uc18d\uc801\uc778\ub370 GetPaintValueSupported\uc5d0\uc11c true\ub97c \ubc18\ud658\ud558\uba74 PaintValue\ub77c\ub294 \ub9e4\uc11c\ub4dc\ub97c \uac1c\ubc1c\uc790\uac00 override\ud558\uaca0\ub2e4\ub294 \uc758\ubbf8\uc774\ub2e4. \ub610\ud55c \ubc14\ub85c \uc774 PaintValue \ub9e4\uc11c\ub4dc\uc5d0\uc11c \ucef4\ubcf4 \ub9ac\uc2a4\ud2b8\uc5d0\uc11c \uc2e4\uc81c\ub85c \uadf8\ub9bc\uc744 \uadf8\ub824\uc900\ub2e4. \ub9cc\uc57d GetPaintValueSupported\uac00 false\ub97c \ubc18\ud658\ud558\uba74 \uadf8\ub9bc\uc774 \uc5c6\ub294 \ub2e8\uc21c\ud788 \ubb38\uc790\ub9cc \ub098\ud0c0\ub294 \ucef4\ubcf4 \ub9ac\uc2a4\ud2b8\uc758 \ud615\ud0dc\ub85c \ub098\ud0c0\ub09c\ub2e4. \uc544\ub798\uc758 \uadf8\ub9bc\ucc98\ub7fc \ub9d0\uc774\ub2e4.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1093025822.png\" alt=\"\" width=\"259\" height=\"284\" \/>\uadf8\ub807\ub2e4\uba74 \uc774\uc81c PaintValue \ub9e4\uc11c\ub4dc\uc5d0 \ub300\ud574 \uc9d1\uc911\ud574\ubcf4\uc790. \uc774 \ub9e4\uc11c\ub4dc\ub294 \ub0b4\uc6a9\uc740 \uc774\ub807\ub2e4. \uba3c\uc800 IDE\uc5d0\uc11c \ucd94\uac00\ud55c \ub9ac\uc18c\uc2a4(MyResource.resx\ub85c \uc9c0\uc815\ud588\uc74c)\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub294 ResourceManager \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \uc5bb\ub294 \ucf54\ub4dc\uc758 \ubd80\ubd84\uc774 \uc788\ub294\ub370, \ube68\uac15\uc0c9\uc774 \ubc14\ub85c \uadf8 \ucf54\ub4dc\uc774\ub2e4. \uc544\ub798\uc758 \uadf8\ub9bc\uc744 \ucc38\uc870\ud558\uba74 \uc774\ud574\ud558\uae30\uac00 \uc26c\uc6b8\uac83\uc774\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1024623692.png\" alt=\"\" width=\"489\" height=\"346\" \/>\uadf8\ub9ac\uace0 \uc774\ub807\uac8c \uc5bb\uc740 ResourceManager\ub97c \ud1b5\ud574 \ud604\uc7ac \uc0ac\uc6a9 \ucef4\ubcf4 \ub9ac\uc2a4\ud2b8\uc5d0 \uadf8\ub824\uc9c8 \uc774\ubbf8\uc9c0\ub97c \uc5bb\uc5b4\uc624\ub294 \ucf54\ub4dc\uac00 \ucd08\ub85d\uc0c9\uc774\ub2e4. \ub05d\uc73c\ub85c \ube68\uac15\uc0c9 \ucf54\ub4dc\ub294 \uc774\ub807\uac8c \uc5bb\uc5b4\uc628 \uc774\ubbf8\uc9c0\ub97c \ud654\uba74\uc0c1\uc5d0 \uadf8\ub9b0\ub2e4. \uadf8\ub9b4 \uc601\uc5ed\uc740 PaintValue\uc758 \uc778\uc790\ub85c \ub118\uc5b4\uc628 PaintValueEventAgrs e\ub97c \ud1b5\ud574\uc11c \uc5bb\uc744 \uc218 \uc788\ub294\ub370, \ubc14\ub85c e.Bounds\uc774\ub2e4.<\/p>\n<p>\uc74c&#8230; \ubc14\ub85c \uc9c0\ub09c\ubc88\uc5d0 \uc54c\uc544\ubcf8 \ubb38\uc790\uc5f4\uc5d0 \ub300\ud55c \ucef4\ubcf4 \ub9ac\uc2a4\ud2b8 \ubc15\uc2a4\ub97c \ud504\ub85c\ud37c\ud2f0\uc5d0 \ubd99\uc774\ub294 \uac83\uc5d0 \ube44\ud558\uba74 \ubb34\ucc99 \uc27d\ub2e4\uace0 \uc0dd\uac01\ud55c\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc774\uc81c PropertyGrid \ucee8\ud2b8\ub864\uc758 \ud504\ub85c\ud37c\ud2b8\uc5d0 \uc774\ubbf8\uc9c0 \ucef4\ubcf4 \ub9ac\uc2a4\ud2b8\ub97c \ub2ec\uc544\ubcf4\uc790. \uc544\ub798\uc758 \uacb0\uacfc\ucc98\ub7fc \ub9d0\uc774\ub2e4. \uba3c\uc800 PropertyGrid\uc758 SelectedObject\uc5d0 \ud560\ub2f9\ub420 \ud504\ub85c\ud37c\ud2f0\ub97c \uc815\uc758\ud560 \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\uc5b4 \uc8fc\uc5b4\uc57c \ud55c\ub2e4. \uc989 \uc6b0\ub9ac\uac00 \uc9c0\uae08 \uc815\uc758\ud560 \ud074\ub798\uc2a4\uc5d0\ub294 \uc704\uc758 \uadf8\ub9bc\uc5d0\uc11c\ucc98\ub7fc SourceType\uc774\ub77c\ub294 \ud504\ub85c\ud37c\ud2f0\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \ub2f4\uace0 \uc788\uc744 \uac83\uc774\ub2e4. \uc544\ub798\uc758 \ucf54\ub4dc\uac00 \ubc14\ub85c \uadf8 \ud074\ub798\uc2a4\uc774\ub2e4. \ud074\ub798\uc2a4 \uba85\uc740.. \ub531\ud788 \uc9c0\uc744\ub9cc\ud55c\uac8c \uc5c6\uc5b4 \uac1c\ub625\uc774\ud074\ub798\uc2a4\ub77c\uace0 \ud558\ub824\ub2e4\uac00 \uadf8\ub0e5 \uc58c\uc804\ud558\uac8c MyProperty\ub77c\uace0 \uc774\ub984 \ubd99\uc600\ub2e4. (C#\uc5d0\uc11c\ub294 \ud074\ub798\uc2a4\uba85\uc774\ub098 \ubcc0\uc218\uba85\uc744 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=236\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;[.NET] C#\uc744 \uc774\uc6a9\ud55c PropertyGrid \uc0ac\uc6a9\ubc95\uc5d0 \ub300\ud55c Summary <III>&#8220;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[118,8],"tags":[],"class_list":["post-236","post","type-post","status-publish","format-standard","hentry","category-csharp","category-programming"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=236"}],"version-history":[{"count":2,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/236\/revisions"}],"predecessor-version":[{"id":3678,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/236\/revisions\/3678"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=236"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}