{"id":229,"date":"2007-02-08T14:22:00","date_gmt":"2007-02-08T05:22:00","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=229"},"modified":"2017-01-31T19:49:48","modified_gmt":"2017-01-31T10:49:48","slug":"net-propertygrid-%ec%82%ac%ec%9a%a9%eb%b2%95%ec%97%90-%eb%8c%80%ed%95%9c-summary-ii","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=229","title":{"rendered":"[.NET] C#\uc744 \uc774\uc6a9\ud55c PropertyGrid \uc0ac\uc6a9\ubc95\uc5d0 \ub300\ud55c Summary <II>"},"content":{"rendered":"<p>\uc55e\uc11c \uc5b8\uae09\ud55c\ub300\ub85c, PropertyGrid\uc5d0 List \ucee8\ud2b8\ub864\uc744 \ub2ec\uc544\ubcf4\uc790. \uc774 \uae00\uc744 \uc4f0\uae30\uc5d0 \uc55e\uc11c List \ucee8\ud2b8\ub864\uc744 PropertyGrid\uc5d0 \ub2ec\uc544\ubcf4\ub294 \uc0d8\ud50c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uba74\uc11c, \ubb50.. &#8220;\uc774\ub7f0 \ubdc1\uc2a4\ub7f0&#8221;\uc774\ub780 \uc0dd\uac01\uc774 \ub4e4\uc5c8\ub2e4. \ub2e8\uc9c0 \ucee8\ud2b8\ub864 \ud558\ub098 \ub2ec\uae30 \uc704\ud574 \uc804\uc5ed \ubcc0\uc218\uc774\uba70 \uc0c8\ub85c\uc6b4 \ud074\ub798\uc2a4\ub97c 2\uac1c\uc529\uc774\ub098 \ub9cc\ub4e4\uc5b4\uc918\uc57c\ud558\ub2e4\ub2c8.. .NET\uc5d0 \ub300\ud55c \uc2e4\ub9dd\uc774 \ucabc\ub054 \uc778\ub2e4. \uadf8\ub7ec\ub098 \uc774 \ubc29\ubc95\ub9d0\uace0 \uc880\ub354 \uc138\ub828\ub41c \ubc29\ubc95\uc774 \uc788\uc744\uac83\uc774\ub77c \uc0dd\uac01\ub41c\ub2e4. \ud55c\ubc88 \uc2dc\uac04\ub0a0\ub54c \ucc3e\uc544\ubd10\uc57c\uaca0\ub2e4.<\/p>\n<p>\uc5ec\ud558\ud2bc, \uc9c0\uae08 \ub0b4\uac00 \uc54c\uace0 \uc788\ub294 \ubc29\ubc95\uc744 \uc815\ub9ac\ud574\ubcf4\uc790. \uba3c\uc800 \uad6c\ud604\ud560 \uacb0\uacfc \ud654\uba74\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1201825535.png\" alt=\"\" width=\"295\" height=\"279\" \/>\uc989, \uc6b0\ub9ac\uac00 \ucd94\uac00\ud560 \ud504\ub85c\ud37c\ud2f0\uc758 \uc774\ub984\uc740 ItemName\uc774\uace0 \uc774 \ud504\ub85c\ud37c\ud2f0\uc758 \uac12\uc73c\ub85c \uc0ac\uacfc, \uade4, \ud3ec\ub3c4, \ub9dd\uace0, \ub538\uae30\uc744 \uc120\ud0dd\ud560 \uc218 \uc788\ub294 Combo List \ucee8\ud2b8\ub864\uc774\ub77c\ub294 \ub3c4\uc6b0\ubbf8\ub97c \ubd99\uc778 \ud615\ud0dc\ub97c \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc774\ub2e4.<\/p>\n<p>\uba3c\uc800 \uc0ac\uacfc, \uade4, \ud3ec\ub3c4 \ub4f1\uc758 \ubb38\uc790\uc5f4\ub4e4\uc744 \ub2f4\uc744 string \ubc30\uc5f4\uc5d0 \ub300\ud55c \uc804\uc5ed \ubcc0\uc218\ub97c \uc120\uc5b8\ud55c\ub2e4.<\/p>\n<pre>internal class PropertyItemList\r\n{\r\n    internal static string[] _items;\r\n}<\/pre>\n<p>\ube44\ub85d PropertyItemList\ub77c\ub294 \ud074\ub798\uc2a4\ub97c \uc804\uc5ed\ubcc0\uc218\ub85c\uc368 \uc778\uc2a4\ud134\uc2a4\ud654\ud558\uc9c0\ub294 \uc54a\uaca0\uc9c0\ub9cc, \ub9f4\ubc84\ubcc0\uc218\ub85c \uc815\uc801\uc73c\ub85c \uc120\uc5b8\ud568\uc73c\ub85c\uc368 \uc804\uc5ed\ubcc0\uc218\uc758 \uc758\ubbf8\ub97c \uac16\ub294\ub2e4. \uc774\ub807\uac8c \uc815\uc801\uc73c\ub85c \uc120\uc5b8\ud558\uc5ec \uc804\uc5ed\ucc98\ub7fc \uc4f0\ub294 \uc774\uc720\ub294 \uc55e\uc73c\ub85c \ucd94\uac00\ud560 2\uac1c\uc758 \uc0c8\ub85c\uc6b4 \ud074\ub798\uc2a4\uc5d0\uc11c \uc774 PropertyItemList\uc758 _items \uc815\uc801\ubcc0\uc218\uc5d0 \uc811\uadfc\ud574\uc57c\ud558\uae30 \ub54c\ubb38\uc774\ub2e4. \ucd94\uac00\ud560 2\uac1c\uc758 \uc0c8\ub85c\uc6b4 \ud074\ub798\uc2a4\uc5d0 \ub300\ud574\uc11c \uc0b4\ud3b4\ubcf4\uae30 \uc804\uc5d0 PropertyItemList\uc758 _items \ubcc0\uc218\uc5d0 \ubb38\uc790\uac12\ub4e4\uc744 \ub123\uc5b4\uc8fc\ub294 \ucf54\ub4dc\uc758 \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n<pre>private void Form1_Load(object sender, EventArgs e)\r\n    {\r\n        MyList listItem = new MyList();\r\n\r\n        PropertyItemList._items = new String[5];\r\n        PropertyItemList._items[0] = \"\uc0ac\uacfc(Apple)\";\r\n        PropertyItemList._items[1] = \"\uade4(Orange)\";\r\n        PropertyItemList._items[2] = \"\ud3ec\ub3c4(Grape)\";\r\n        PropertyItemList._items[3] = \"\ub9dd\uace0(Mango)\";\r\n        PropertyItemList._items[4] = \"\ub538\uae30(Strawbery)\";\r\n\r\n        propertyGrid1.SelectedObject = listItem;\r\n}<\/pre>\n<p>MyList\ub294 \uc55e\uc73c\ub85c \ucd94\uac00\ud560 2\uac1c\uc758 \ud074\ub798\uc2a4 \uc911 \ud558\ub098\uc774\uba70, propertyGrid\uc758 SelectedObject \uc18d\uc131\uc5d0 \ub123\uc5b4\uc8fc\uac8c \ub41c\ub2e4. \uc774\ub294 \uc774\ubbf8 \uc55e\uc11c \uc0b4\ud3b4\ubd24\uc73c\ubbc0\ub85c \uc774\ubbf8 \uc798\uc54c\uace0\uc788\uc744\uac83\uc774\ub2e4.<\/p>\n<p>\uc774\uc81c \uc0c8\ub85c\uc6b4\uac8c \ucd94\uac00\ud560 \ub450\uac1c\uc758 \ud074\ub798\uc2a4\ub97c \ud558\ub098 \ud558\ub098 \ub9cc\ub4e4\uc5b4 \ubcf4\uc790. \uba3c\uc800 \uc774\ubbf8 \ub098\uc640\ubc84\ub9b0 MyList \ud074\ub798\uc2a4\uc774\ub2e4.<\/p>\n<pre>public class MyList {\r\n    private string _itemName;\r\n\r\n    [Browsable(true)]\r\n    [TypeConverter(typeof(MyConverter))]\r\n    public string ItemName {\r\n        get {\r\n            string S = \"\";\r\n            if (_itemName != null) {\r\n                S = _itemName;\r\n            } else {\r\n                S = PropertyItemList._items[0];\r\n            }\r\n\r\n            return S;\r\n        }\r\n\r\n        set { _itemName = value; }\r\n    }\r\n}<\/pre>\n<p>ProperrtGrid\uc5d0 \ucd94\uac00\ud560 \ud504\ub7ec\ud37c\ud2f0\uc778 ItemName\uc744 \uac00\uc9c0\uace0 \uc788\uc73c\uba70 Attribute\ub97c \uc9c0\uc815\ud558\uace0 \uc788\ub2e4. \uc5ec\uae30\uc11c \uc9c0\uc815\ub41c Attribute\uc5d0 \ub300\ud574\uc11c \uc0b4\ud3b4\ubcf4\uba74, Browsable\uc640 TypeConverter\uc774\ub2e4. Browsable\ub294 \uc6d0\ub798 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub418\ub294\ub370, \uae30\ubcf8\uac12\uc73c\ub85c true\uc774\uae30 \ub54c\ubb38\uc774\ub2e4. \uc758\ubbf8\uadf8\ub300\ub85c PropertyGrid\uc5d0 \ub098\ud0c0\ub0bc \uac83\uc774\ub0d0 \ub9d0\uac83\uc774\ub0d0\ub97c \uc815\ud558\ub294 \uac83\uc774\ub2e4. \uadf8\ub9ac\uace0 TypeConverter\uac00 \ubc14\ub85c \uc6b0\ub9ac\uac00 \ucd94\uac00\ud55c \ud504\ub85c\ud37c\ud2f0\uc5d0 \ub9ac\uc2a4\ud2b8 \ucee8\ud2b8\ub864\uc744 \ub2ec\uac8c \ud558\ub294 \uc5ed\ud65c\uc744 \ud558\ub294 Attribute\uc774\ub2e4. \uc989, TyperConverter\uc758 \uc778\uc790\ub85c\uc368 \uc5b4\ub5a4 \ud074\ub798\uc2a4\ub97c \uc8fc\ub294\ub370, \ubc14\ub85c \uc774 \uc5b4\ub5a4 \ud074\ub798\uc2a4\ub97c \ud1b5\ud574 \ud504\ub85c\ud37c\ud2f0\uc5d0 \ub9ac\uc2a4\ud2b8 \ucee8\ud2b8\ub864\uc744 \ub2ec\uac70\ub098 \ud504\ub85c\ud37c\ud2f0\ub97c \uc0ac\uc6a9\uc790\uac00 \uc9c1\uc811\uac12\uc744 \uc218\uc815\ud558\uac8c \ud558\uac70\ub098 \ub9ac\uc2a4\ud2b8 \ucee8\ud2b8\ub864\uc5d0\uc11c \uc120\ud0dd\ub9cc \ud558\uac8c \ud558\uac70\ub098 \ub4f1\uc758 \ud2b9\uc131\uc744 \uc9c0\uc815\ud558\ub294 \uac83\uc774\ub2e4. \uadf8\ub807\ub2e4\uba74 \uc774\uc81c \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc774 \uc5b4\ub5a4 \ud074\ub798\uc2a4\uc778 MyConverter\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n<pre>public class MyConverter : StringConverter\r\n{\r\n    public override bool GetStandardValuesSupported(\r\n        ITypeDescriptorContext context) {\r\n        return true;\r\n    }\r\n\r\n    public override bool GetStandardValuesExclusive(\r\n        ITypeDescriptorContext context) {\r\n\treturn true;\r\n    }\r\n\r\n    public override \r\n        System.ComponentModel.TypeConverter.StandardValuesCollection\r\n        GetStandardValues(ITypeDescriptorContext context) {\r\n        return new StandardValuesCollection(PropertyItemList._items);\r\n    }\r\n}<\/pre>\n<p>\ub2e4\uc18c, \ubdc1\uc2a4\ub7ec\uc6b4 \ud074\ub798\uc2a4\ub77c\uace0 \uc0dd\uac01\ud558\ub294\ub370, \uc774 \ud558\ub098\uc758 \ud074\ub798\uc2a4\uc5d0\uc11c \uc0dd\uc804\ubcf4\ub3c4 \ubabb\ud55c .NET \ud074\ub798\uc2a4\uac00 \ucc38 \ub9ce\uc774\ub3c4 \ub098\uc624\uae30 \ub54c\ubb38\uc774\ub2e4. \ub2e4 \uc9d1\uc5b4\uce58\uc6b0\uace0 \ud544\uc694\ud55c \uac83\ub9cc \uace8\ub77c \ub530\uc838\ubcf4\uba74, \uba3c\uc800 override\ud55c GetStandardValuesSupported\uc5d0\uc11c true\ub97c \ubc18\ud658\ud574\uc57c\ub9cc Combo List \ucee8\ud2b8\ub864\uc744 \ubcfc\uc218\uac00 \uc788\uc73c\uba70 false\ub97c \ubc18\ud658\ud558\uba74 \uc6b0\ub9ac\uc758 \ub178\ub825\uc740 \ubb3c\uac70\ud488\uc774 \ub418\uace0 \ub9cc\ub2e4. \uadf8\ub9ac\uace0 GetStandardValuesExclusive\ub77c\ub294 \ub9e4\uc11c\ub4dc\uc758 \ubc18\ud658\uac12\uc744 true\ub85c \ud558\uba74 \ub2e8\uc2dc List\uc5d0\uc11c \uc120\ud0dd\ub9cc \ud560 \uc218 \uc788\uace0 \ud0a4\ubcf4\ub4dc\ub85c \ubb38\uc790\uc5f4\uac12\uc744 \ubcc0\uacbd\ud560 \uc218 \uc5c6\uac8c\ub41c\ub2e4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c GetStandardValues\ub294 List \ucee8\ud2b8\ub864\uc5d0 \ub098\uc5f4\ub41c \ubb38\uc790\uc5f4\uac12\uc744 \uc9c0\uc815\ud574\uc8fc\uae30 \uc704\ud55c \ub9e4\uc11c\ub4dc\uc774\ub2e4.<\/p>\n<p>\ud544\uc790\ub294 &#8220;\ubb54\uac00 \uc798\ubabb\ub41c \uac83 \uac19\ub2e4&#8221;\ub77c\ub294 \uc0dd\uac01\uc774 \ub4e4\uc5c8\ub2e4. \ub2e8\uc9c0 \ucef4\ubcf4 \ub9ac\uc2a4\ud2b8 \ucee8\ud2b8\ub864 \ud558\ub098 \ucd94\uac00\ud558\uae30 \uc704\ud55c \uacfc\uc815\uc774 \uc774\ucc98\ub7fc \ubcf5\uc7a1\ud558\ub2e4\ub294 \uc774\uc720\uc5d0\uc11c\uac00 \uc544\ub2c8\ub77c, \ubc18\ub4dc\uc2dc \uc804\uc5ed\ubcc0\uc218\ub97c \uc120\uc5b8\ud574\uc57c\ub9cc(\uc5ec\uae30\uc11c\ub294 \uac19\uc740 \ud6a8\uacfc\ub97c \uc704\ud574 \uc815\uc801\ubcc0\uc218\ub97c \uc120\uc5b8\ud588\ub2e4) \ud55c\ub2e4\ub294 \uac83\uc5d0\uc11c\uc600\ub2e4. \uc774 \ubb38\uc81c\ub294 \ucc28\uce30 \ud574\uacb0\ub420 \uac83\uc774\ub77c\uace0 \uc0dd\uac01\ub41c\ub2e4.<\/p>\n<p>\ub05d\uc73c\ub85c Blog\uc5d0 \uc5b4\uc81c\ubd80\ud130 google\uc758 AdSense\ub97c \ub2ec\uc544\ub1a8\ub294\ub370.. \uc774 \uae00\uc774 \ub3c4\uc6c0\uc774 \ub418\uc168\ub2e4\uba74 \ub313\uae00\ub9d0\uace0, \uc606\uc5d0 AdSense \ud074\ub9ad \uc880 \ud574\uc8fc\uc2dc\uae38~ \ub313\uae00\uc740 \uc4f0\uae30 \ud798\ub4dc\uc2e4\uae4c\ubd10~ \u314b &#8211;;;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc55e\uc11c \uc5b8\uae09\ud55c\ub300\ub85c, PropertyGrid\uc5d0 List \ucee8\ud2b8\ub864\uc744 \ub2ec\uc544\ubcf4\uc790. \uc774 \uae00\uc744 \uc4f0\uae30\uc5d0 \uc55e\uc11c List \ucee8\ud2b8\ub864\uc744 PropertyGrid\uc5d0 \ub2ec\uc544\ubcf4\ub294 \uc0d8\ud50c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uba74\uc11c, \ubb50.. &#8220;\uc774\ub7f0 \ubdc1\uc2a4\ub7f0&#8221;\uc774\ub780 \uc0dd\uac01\uc774 \ub4e4\uc5c8\ub2e4. \ub2e8\uc9c0 \ucee8\ud2b8\ub864 \ud558\ub098 \ub2ec\uae30 \uc704\ud574 \uc804\uc5ed \ubcc0\uc218\uc774\uba70 \uc0c8\ub85c\uc6b4 \ud074\ub798\uc2a4\ub97c 2\uac1c\uc529\uc774\ub098 \ub9cc\ub4e4\uc5b4\uc918\uc57c\ud558\ub2e4\ub2c8.. .NET\uc5d0 \ub300\ud55c \uc2e4\ub9dd\uc774 \ucabc\ub054 \uc778\ub2e4. \uadf8\ub7ec\ub098 \uc774 \ubc29\ubc95\ub9d0\uace0 \uc880\ub354 \uc138\ub828\ub41c \ubc29\ubc95\uc774 \uc788\uc744\uac83\uc774\ub77c \uc0dd\uac01\ub41c\ub2e4. \ud55c\ubc88 \uc2dc\uac04\ub0a0\ub54c \ucc3e\uc544\ubd10\uc57c\uaca0\ub2e4. \uc5ec\ud558\ud2bc, \uc9c0\uae08 \ub0b4\uac00 \uc54c\uace0 \uc788\ub294 \ubc29\ubc95\uc744 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=229\" 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 <II>&#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-229","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\/229","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=229"}],"version-history":[{"count":1,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/229\/revisions"}],"predecessor-version":[{"id":3680,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/229\/revisions\/3680"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=229"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}