【问题】
C#中已经有了一个ComboBox和一个特定的结构体数组:
private struct keyValueList { public string Key{get;set;} // key public List<string> ValueStrList{get;set;} // the string value list for the key } List<keyValueList> gFootprintTypeSelList; // footprint type private void initFootprintTypeAndFootprintString() { gFootprintTypeSelList = new List<keyValueList>(); //1. option1: Guest Blogging keyValueList keyValueListGuestBlogging = new keyValueList(); keyValueListGuestBlogging.Key = "Guest Blogging"; keyValueListGuestBlogging.ValueStrList = new List<string>(); //keyValueListGuestBlogging.ValueStrList.Add("Specify Footprint"); keyValueListGuestBlogging.ValueStrList.Add("Guest Blogging"); keyValueListGuestBlogging.ValueStrList.Add("Contribute"); keyValueListGuestBlogging.ValueStrList.Add("Write for us"); keyValueListGuestBlogging.ValueStrList.Add("Guest Category"); keyValueListGuestBlogging.ValueStrList.Add("Submit Content"); gFootprintTypeSelList.Add(keyValueListGuestBlogging); //2. option2: Blog Commenting keyValueList keyValueListBlogCommenting = new keyValueList(); keyValueListBlogCommenting.Key = "Blog Commenting"; keyValueListBlogCommenting.ValueStrList = new List<string>(); keyValueListBlogCommenting.ValueStrList.Add("KeywordLuv Blogs"); keyValueListBlogCommenting.ValueStrList.Add("Joomla JComments Plugin"); keyValueListBlogCommenting.ValueStrList.Add("Yootheme Zoo Blog App"); keyValueListBlogCommenting.ValueStrList.Add("CommentLuv Premium Blogs"); keyValueListBlogCommenting.ValueStrList.Add("Anchor Text In Comment Blogs"); keyValueListBlogCommenting.ValueStrList.Add("Do Follow Comment Blogs"); keyValueListBlogCommenting.ValueStrList.Add("Create your own .GOV WordPress site"); keyValueListBlogCommenting.ValueStrList.Add("Create your own .EDU WordPress site"); keyValueListBlogCommenting.ValueStrList.Add("Find .edu Blogs"); keyValueListBlogCommenting.ValueStrList.Add("Find .gov Blogs"); gFootprintTypeSelList.Add(keyValueListBlogCommenting); //3. option3: Message Boards and Forums keyValueList keyValueListMessageBoardsAndForums = new keyValueList(); keyValueListMessageBoardsAndForums.Key = "Message Boards and Forums"; keyValueListMessageBoardsAndForums.ValueStrList = new List<string>(); keyValueListMessageBoardsAndForums.ValueStrList.Add("PHPbb"); keyValueListMessageBoardsAndForums.ValueStrList.Add("vBulletin"); keyValueListMessageBoardsAndForums.ValueStrList.Add("SMF"); keyValueListMessageBoardsAndForums.ValueStrList.Add("Simple Machines"); keyValueListMessageBoardsAndForums.ValueStrList.Add("punBB"); keyValueListMessageBoardsAndForums.ValueStrList.Add("Expression Engine"); keyValueListMessageBoardsAndForums.ValueStrList.Add("Blog Engine"); gFootprintTypeSelList.Add(keyValueListMessageBoardsAndForums); //4. option4: Advanced Search Parameters keyValueList keyValueListAdvancedSearchParameters = new keyValueList(); keyValueListAdvancedSearchParameters.Key = "Advanced Search Parameters"; keyValueListAdvancedSearchParameters.ValueStrList = new List<string>(); keyValueListAdvancedSearchParameters.ValueStrList.Add("URLs Containing Keyword"); keyValueListAdvancedSearchParameters.ValueStrList.Add("Page Titles Containing Keyword"); keyValueListAdvancedSearchParameters.ValueStrList.Add("Search Anchor Text"); keyValueListAdvancedSearchParameters.ValueStrList.Add("Related (enter a domain)"); gFootprintTypeSelList.Add(keyValueListAdvancedSearchParameters); //5. option5: Sponsor/Donate keyValueList keyValueListSponsorDonate = new keyValueList(); keyValueListSponsorDonate.Key = "Sponsor/Donate"; keyValueListSponsorDonate.ValueStrList = new List<string>(); keyValueListSponsorDonate.ValueStrList.Add("Sponsor"); keyValueListSponsorDonate.ValueStrList.Add("Sponsorship"); keyValueListSponsorDonate.ValueStrList.Add("Benefactors"); keyValueListSponsorDonate.ValueStrList.Add("Sponsor Charity"); keyValueListSponsorDonate.ValueStrList.Add("Donate"); keyValueListSponsorDonate.ValueStrList.Add("Donations"); keyValueListSponsorDonate.ValueStrList.Add("Donors"); gFootprintTypeSelList.Add(keyValueListSponsorDonate); //6. option6: Wiki / Media Wiki Pages keyValueList keyValueListWikiMediaWikiPages = new keyValueList(); keyValueListWikiMediaWikiPages.Key = "Wiki / Media Wiki Pages"; keyValueListWikiMediaWikiPages.ValueStrList = new List<string>(); keyValueListWikiMediaWikiPages.ValueStrList.Add("Wiki sites"); keyValueListWikiMediaWikiPages.ValueStrList.Add("Outdated Wiki Content"); gFootprintTypeSelList.Add(keyValueListWikiMediaWikiPages); //7. option7: Other Queries keyValueList keyValueListOtherQueries = new keyValueList(); keyValueListOtherQueries.Key = "Other Queries"; keyValueListOtherQueries.ValueStrList = new List<string>(); keyValueListOtherQueries.ValueStrList.Add("Directory Add URL"); keyValueListOtherQueries.ValueStrList.Add("Directory Site"); keyValueListOtherQueries.ValueStrList.Add("Hubpages - Hot Hubs"); keyValueListOtherQueries.ValueStrList.Add("Squidoo lenses - Add To List"); keyValueListOtherQueries.ValueStrList.Add("Social Bookmarking"); keyValueListOtherQueries.ValueStrList.Add("Social Bookmarking 2.0"); keyValueListOtherQueries.ValueStrList.Add("Guestbooks"); keyValueListOtherQueries.ValueStrList.Add("Suggest or Submit URL"); keyValueListOtherQueries.ValueStrList.Add("Warp Framework (Joomla)"); keyValueListOtherQueries.ValueStrList.Add("Angelae8654 Site Profiles"); gFootprintTypeSelList.Add(keyValueListOtherQueries); //8. option8: Link Bartering keyValueList keyValueListLinkBartering = new keyValueList(); keyValueListLinkBartering.Key = "Link Bartering"; keyValueListLinkBartering.ValueStrList = new List<string>(); keyValueListLinkBartering.ValueStrList.Add("Buy Blog Posts"); keyValueListLinkBartering.ValueStrList.Add("Buy Link"); keyValueListLinkBartering.ValueStrList.Add("Link Exchange"); keyValueListLinkBartering.ValueStrList.Add("Link Barter Service"); gFootprintTypeSelList.Add(keyValueListLinkBartering); //9. option9: Site Specific Sites keyValueList keyValueListSiteSpecificSites = new keyValueList(); keyValueListSiteSpecificSites.Key = "Site Specific Sites"; keyValueListSiteSpecificSites.ValueStrList = new List<string>(); keyValueListSiteSpecificSites.ValueStrList.Add("Facebook"); keyValueListSiteSpecificSites.ValueStrList.Add("Twitter"); keyValueListSiteSpecificSites.ValueStrList.Add("Pinterest"); keyValueListSiteSpecificSites.ValueStrList.Add("Google Groups"); keyValueListSiteSpecificSites.ValueStrList.Add("Scribd"); keyValueListSiteSpecificSites.ValueStrList.Add("Slideshare"); keyValueListSiteSpecificSites.ValueStrList.Add("Wikipedia"); keyValueListSiteSpecificSites.ValueStrList.Add("Tumblr"); keyValueListSiteSpecificSites.ValueStrList.Add("Typepad"); keyValueListSiteSpecificSites.ValueStrList.Add("Buzzfeed"); keyValueListSiteSpecificSites.ValueStrList.Add("NYTimes"); keyValueListSiteSpecificSites.ValueStrList.Add("Huffington Post"); gFootprintTypeSelList.Add(keyValueListSiteSpecificSites); }
现在希望把此结构体数组gFootprintTypeSelList,当做ComboBox变量cmbFootprintType的数据源。
希望实现下拉菜单中,可以显示对应的名字。以及获得对应选中项的值,是其中的List<string>的ValueStrList。
【解决过程】
1.参考了之前的自己的:
和
去写代码:
cmbFootprintType.DataSource = gFootprintTypeSelList; cmbFootprintType.DisplayMember = "key";
就可以正常显示所要的结果了:
【总结】
动态的给ComboBox绑定数据源:
1.设置结构体,其中的field的名字首字母大写,支持get和set;
2.创建对应的结构体数组
3.把结构体数组赋值给ComboBox的DataSource,把DisplayMember设置为对应的结构体的field的名字(全小写)
即可。
转载请注明:在路上 » 【已解决】C#中给ComboBox设置数据源