2016-07-01 20 views
-1

嗨,大家好我已經做了一個所有者繪製的列表框,其中添加了頭像和用戶朋友的姓名和電子郵件。我有一點麻煩。基本上我有一個查詢獲取用戶朋友的姓名和電子郵件,然後通過使用'query.ToList()'將查詢添加到列表框數據源。我想要做的是爲數據源中的每個朋友創建一個新的列表框項目。C#如何使用數據源使用'foreach'語句?

代碼:

 FriendsLb.DisplayMember = "Display"; 
     FriendsLb.ValueMember = "FirstName"; 
     FriendsLb.ValueMember = "LastName"; 
     FriendsLb.ValueMember = "Email"; 

     var query = from o in Globals.DB.Friends 
        where o.UserEmail == Properties.Settings.Default.Email 
        select new 
        { 
         FirstName = o.FirstName, 
         LastName = o.LastName, 
         Email = o.Email, 

         Display = string.Format(" {0} {1} - ({2})", o.FirstName, o.LastName, o.Email), 
        }; 

     FriendsLb.DataSource = query.ToList(); 

     foreach (object contact in FriendsLb.DataSource)) 
     { 
      FriendsLb.Items.Add(new Contacts(Properties.Resources.avatar, contact.ToString())); 
     } 

錯誤: Error 任何想法?乾杯

這是它應該是什麼時候的代碼是正確的,如:

Gui

+0

您不要將項目添加到綁定到DataSource的控件; Doest' Contact'包含您爲查詢/ DS收集的信息嗎? – Plutonix

+0

您是否在上次刪除的帖子中的DrawItem事件中添加了「if(e.index> -1)」? – LarsTech

+0

不,不,聯繫僅獲取頭像和朋友的詳細信息並將其返回 – richardj97

回答

0

你還是創建一個DTO或視圖模型,然後用它很像

public class Contact 
{ 
    public string Firstname {get; set;} 
    public string Lastname{get; set;} 
    public string Email {get; set;} 
    public string Display {get; set;} 
} 

    var query = from o in Globals.DB.Friends 
       where o.UserEmail == Properties.Settings.Default.Email 
       select new Contact 
       { 
        FirstName = o.FirstName, 
        LastName = o.LastName, 
        Email = o.Email, 

        Display = string.Format(" {0} {1} - ({2})", o.FirstName, o.LastName, o.Email), 
       }; 

添加數據源到您的數據綁定控件,如下所示。同樣,如已經評論的那樣,您只能有一個ValueMember而不是多個。

FriendsLb.DataSource = query.ToList(); 
    FriendsLb.DisplayMember = "Display"; 
    FriendsLb.ValueMember = "Email"; 
+0

謝謝!我如何使用'foreach'語句將每個朋友添加到列表框? – richardj97

+0

@ richardj97,你其實沒有。如果有幫助,請參閱編輯答案。 – Rahul