我已經創建了兩個按鈕('Move Top'和'Move Bottom'),我必須讓它們按如下方式工作。當我從列表框中單擊一個項目(例如,如果我們有項目:1.貓,2.狗,3.鳥,4.恐龍和5.菲尼克斯在列表框中)它直接移動到頂部或底部。如何移動C#中ListBox頂部(和底部)的元素?
比方說,我想元素恐龍移動到我的列表框的頂部,和元素狗 - 底部。我怎樣才能使它工作?再次 - 我應該通過將其移動到直接到頂部/底部。
PS:這是我第一天在這裏,所以原諒我,如果我的問題不夠清楚:)
我已經創建了兩個按鈕('Move Top'和'Move Bottom'),我必須讓它們按如下方式工作。當我從列表框中單擊一個項目(例如,如果我們有項目:1.貓,2.狗,3.鳥,4.恐龍和5.菲尼克斯在列表框中)它直接移動到頂部或底部。如何移動C#中ListBox頂部(和底部)的元素?
比方說,我想元素恐龍移動到我的列表框的頂部,和元素狗 - 底部。我怎樣才能使它工作?再次 - 我應該通過將其移動到直接到頂部/底部。
PS:這是我第一天在這裏,所以原諒我,如果我的問題不夠清楚:)
如果你想在位置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
假設你正在使用MVVM和有約束力的ObservableCollection
您ListBox
。
您可以使用IndexOf
獲得SelectedItem的索引,並使用ObservableCollection
的Move方法。
public void Move(int oldIndex, int newIndex)
你想要類似的東西嗎?
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);
}
這應該可以做到。
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();
}
你在用什麼? WPF,WinForms,ASP.NET,ASP.MVC – trebor
我正在使用Windows窗體 –
[C#將項目移到頂部](http://stackoverflow.com/questions/28309764/c-sharp-move -Item-在-列表框到最頂部) – Sinatr