2

これは私の最後の投稿に関連しています。

リストボックスアイテムに上下のボタンを配置して、上下に移動できるようにします。つまり、リスト内のインデックスを変更します。

私が実際にこれをどのように行うかについてのアイデアはありますか?

マルコム

4

7 に答える 7

3

上ボタンであるボタンを作成し、そのOnClickイベントで次のようにします。

int location = listItems.SelectedIndex;
if (location > 0)
{
    object rememberMe = listItems.SelectedItem;
    listItems.Items.RemoveAt(location);
    listItems.Items.Insert(location - 1, rememberMe);
    listItems.SelectedIndex = location - 1;
}

現在VisualStudioを開いていないため、これはテストされていないことに注意してください。ただし、良いアイデアが得られるはずです。

于 2009-01-11T08:04:04.587 に答える
1

上に移動

int index = listbox.SelectedIndex;
if (index != -1)
{
    if (index > 0)
    {
        ListBoxItem lbi = (ListBoxItem)listbox.Items[index];
        listbox.Items.RemoveAt(index);
        index--;
        listbox.Items.Insert(index, lbi);
        listbox.SelectedIndex = index;
        listbox.ScrollIntoView(lbi);
    }
}

下に移動

int index = listbox.SelectedIndex;
if (index != -1)
{
    if (index < listbox.Items.Count - 1)
    {
        listboxlbi = (ListBoxItem)listbox.Items[index];
        listbox.Items.RemoveAt(index);
        index++;
        listbox.Items.Insert(index, lbi);
        listbox.SelectedIndex = index;
        listbox.ScrollIntoView(lbi);
    }
}
于 2011-08-30T05:02:00.000 に答える
1

モデルにアイテムの順序を含めます(つまり、データクラス)。次に、ListBox をCollectionViewその値でソートされた にバインドします。上/下ボタンは、2 つのデータ項目でこの並べ替えプロパティの値を単純に交換します。

于 2009-01-11T11:35:30.963 に答える
0

私はあなたがあなたが望むものをリストボックスに投げることができるとかなり確信しています。したがって、ラベルと矢印用の2つのボタンを持つ独自のコントロールを作成できます。次に、それをリストボックスにスローし、イベントを添付します。

于 2009-01-11T07:55:18.847 に答える
0

バインドする場合:

private void MoveItemUp()
    {
        if (SelectedGroupField != null)
        {
            List<string> tempList = AvailableGroupField;
            string selectedItem = SelectedGroupField;

            int currentIndex = tempList.IndexOf(selectedItem);

            if (currentIndex > 0)
            {
                tempList.Remove(selectedItem);
                tempList.Insert(currentIndex - 1, selectedItem);
                AvailableGroupField = null;
                AvailableGroupField = tempList;
                SelectedGroupField = AvailableGroupField.Single(p => p == selectedItem);
            }
        }
    }

    private void MoveItemDown()
    {
        if (SelectedGroupField != null)
        {
            List<string> tempList = AvailableGroupField;
            string selectedItem = SelectedGroupField;

            int currentIndex = tempList.IndexOf(selectedItem);

            if (currentIndex < (tempList.Count - 1))
            {
                tempList.Remove(selectedItem);
                tempList.Insert(currentIndex + 1, selectedItem);
                AvailableGroupField = null;
                AvailableGroupField = tempList;
                SelectedGroupField = AvailableGroupField.Single(p => p == selectedItem);
            }
        }        
    }

コマンドをメソッドにバインドする方法については、すでに理解していると仮定して説明していません。

于 2012-03-26T11:48:16.707 に答える