2016-05-11 14 views
0

Ich habe ein Listenfeld "listBox_users", gebunden an eine Bindingsource, und ein weiteres Listbox "listBox_map", das ebenfalls gebunden ist. Ich möchte einen Benutzer von listBox_users auf listBox_map ziehen und ablegen. Ich habe das sehr gut gemacht, als ich die Bindingsource von listBox_map lösche. Mein Problem ist, dass die listBox_map fügen Sie keine neuen Elemente, wenn Datenquelle Eigenschaft definiert ist:Hinzufügen von neuen Elementen zu einer verknüpften Listbox

Items-Auflistung kann nicht geändert werden, wenn die Datasource-Eigenschaft festgelegt ist.

private void listBox_map_DragDrop(object sender, DragEventArgs e) 
    { 

     if (e.Data.GetDataPresent(DataFormats.StringFormat)) 
     { 
      string str = listBox_users.Text; 

      listBox_map.Items.Add(str); // Error here! 
     } 

    } 

Wie kann ich neue Elemente binded listbox hinzufügen? Danke.

+0

Artikel hinzufügen zu der Datenquelle statt Verwendung listBox_map.Items.Add. –

+0

Sie können dieses Thema anzeigen: http://stackoverflow.com/questions/5035744/items-collection-cannot-be-modified-when-the-datasource-property-is-set –

+0

Ich habe das gesehen, aber er sagte "entfernen die DataSource "und ich muss sie behalten. –

Antwort

0

Statt Verwendung

listBox_map.Items.Add(str); // Error here! 

Do it:

yourBindingSourceReference.Add(str); 

Es automatisch auf Ihrem listBox_map widerspiegeln.

MSDN - BindingSource.Add

0

Ich fixiere es von mir selbst, so löschte ich die Datasource Eigenschaft und i hinzugefügt jede Zeile in der Listbox:

var q = 
      from user in SundicappEntities.Instance.users 
       join map in SundicappEntities.Instance.user_profile_map on user.id_user equals map.id_user 
       where map.id_profile==id_profile 
       select new 
       { 

          ListBoxItemDisplayText = user.name_user + " " + user.f_name_user  

       }; 
     foreach (var u in q) 
     { 
      listBox_map.Items.Add(u.ListBoxItemDisplayText); 
     }