2017-01-30 131 views
0

我已經創建了兩個按鈕('Move Top'和'Move Bottom'),我必須讓它們按如下方式工作。當我從列表框中單擊一個項目(例如,如果我們有項目:1.貓,2.狗,3.鳥,4.恐龍5.菲尼克斯在列表框中)它直接移動到頂部或底部。如何移動C#中ListBox頂部(和底部)的元素?

比方說,我想元素恐龍移動到我的列表框的頂部,和元素 - 底部。我怎樣才能使它工作?再次 - 我應該通過將其移動到直接到頂部/底部。

PS:這是我第一天在這裏,所以原諒我,如果我的問題不夠清楚:)

+1

你在用什麼? WPF,WinForms,ASP.NET,ASP.MVC – trebor

+0

我正在使用Windows窗體 –

+0

[C#將項目移到頂部](http://stackoverflow.com/questions/28309764/c-sharp-move -Item-在-列表框到最頂部) – Sinatr

回答

1

如果你想在位置0(開始)在ListBox插入一個項目,你可以使用:

ListBox c = new ListBox(); 
string item="Some string"; 
c.Items.Insert(0, item); //added as first item in Listbox 

,如果你想在列表框中使用的末尾插入:

c.Items.Add(item); //add at the end 
0

假設你正在使用MVVM和有約束力的ObservableCollectionListBox

您可以使用IndexOf獲得SelectedItem的索引,並使用ObservableCollection的Move方法。

public void Move(int oldIndex, int newIndex) 
0

你想要類似的東西嗎?

 public void MoveUp() 
    { 
     MoveItem(-1); 
    } 

    public void MoveDown() 
    { 
     MoveItem(1); 
    } 

    public void MoveItem(int direction) 
    { 
     // Checking selected item 
     if (yourListBox.SelectedItem == null || yourListBox.SelectedIndex < 0) 
      return; // No selected item - nothing to do 

     // Calculate new index using move direction 
     int newIndex = yourListBox.SelectedIndex + direction; 

     // Checking bounds of the range 
     if (newIndex < 0 || newIndex >= yourListBox.Items.Count) 
      return; // Index out of range - nothing to do 

     object selected = yourListBox.SelectedItem; 

     // Removing removable element 
     yourListBox.Items.Remove(selected); 
     // Insert it in new position 
     yourListBox.Items.Insert(newIndex, selected); 
     // Restore selection 
     yourListBox.SetSelected(newIndex, true); 
    } 
0

這應該可以做到。

public void MoveToTop(ListBox lb, int index) { 
    var item = lb.Items[index]; 
    lb.Items.RemoveAt(index); 
    lb.Items.Insert(0, item); 
    lb.Refresh(); 
} 

public void MoveToBottom(ListBox lb, int index) { 
    var item = lb.Items[index]; 
    lb.Items.RemoveAt(index); 
    lb.Items.Add(item); 
    lb.Refresh(); 
} 
相關問題