如题....是winfrom的,不是asp.net的

解决方案 »

  1.   

    http://topic.csdn.net/u/20110105/16/01dfb78b-7d6d-4daa-ba0f-f86dc9c1d292.html
      

  2.   


                int index = listBox1.SelectedIndex;
                object item = listBox1.Items[index];
                listBox1.Items.RemoveAt(index);
                //上移
                listBox1.Items.Insert(index-1,item);
                //下移
                listBox1.Items.Insert(index + 1, item);
                //置顶
                listBox1.Items.Insert(0, item);
                //置底
                listBox1.Items.Add(item);
      

  3.   

    这个操作,简单理解的话就是 ListItem 中数据的交换上移 ->
    index = SelectedIndex -> 获取当前 item 的索引
    index > 0 ? -> 判断能否上移
    object item = listBox.Items[index-1]; -> 获取上一行的数据,并保存到临时变量
    listBox.Items[index-1] = SelectedItem -> 给上一行赋值
    SelectedItem = item; 交换完成
      

  4.   

    其实原理是一样的,就是索引的变换而已e.g// 支持不连续选择项的上移
    if (this.listBox1.SelectedIndices.Count > 0 &&
        this.listBox1.SelectedIndices[0] > 0)
    {
        int[] newIndices =
            this.listBox1.SelectedIndices.Cast<int>()
            .Select(index => index - 1).ToArray();    Console.WriteLine(string.Join(",", newIndices));    this.listBox1.SelectedItems.Clear();    foreach (int index in newIndices)
        {
            object obj = this.listBox1.Items[index];
            this.listBox1.Items[index] = this.listBox1.Items[index + 1];
            this.listBox1.Items[index + 1] = obj;
            this.listBox1.SelectedItems.Add(this.listBox1.Items[index]);
        }
    }
      

  5.   


    private void button1_Click(object sender, EventArgs e)
    {
        // 上移
        if (this.listBox1.SelectedIndices.Count > 0 &&
            this.listBox1.SelectedIndices[0] > 0)
        {
            int[] newIndices =
                this.listBox1.SelectedIndices.Cast<int>()
                .Select(index => index - 1).ToArray();        this.listBox1.SelectedItems.Clear();        for (int i = 0; i < newIndices.Length; i++)
            {
                object obj = this.listBox1.Items[newIndices[i]];
                this.listBox1.Items[newIndices[i]] = this.listBox1.Items[newIndices[i] + 1];
                this.listBox1.Items[newIndices[i] + 1] = obj;
                this.listBox1.SelectedItems.Add(this.listBox1.Items[newIndices[i]]);
            }
        }
    }private void button2_Click(object sender, EventArgs e)
    {
        // 下移
        if (this.listBox1.SelectedIndices.Count > 0 &&
            this.listBox1.SelectedIndices[this.listBox1.SelectedIndices.Count - 1] <
            this.listBox1.Items.Count - 1)
        {
            int[] newIndices =
                this.listBox1.SelectedIndices.Cast<int>()
                .Select(index => index + 1).ToArray();        this.listBox1.SelectedItems.Clear();        for (int i = newIndices.Length; i > 0; i--)
            {
                object obj = this.listBox1.Items[newIndices[i - 1]];
                this.listBox1.Items[newIndices[i - 1]] = this.listBox1.Items[newIndices[i - 1] - 1];
                this.listBox1.Items[newIndices[i - 1] - 1] = obj;
                this.listBox1.SelectedItems.Add(this.listBox1.Items[newIndices[i - 1]]);
            }
        }
    }private void button3_Click(object sender, EventArgs e)
    {
        // 置顶
        if (this.listBox1.SelectedIndices.Count > 0 &&
            this.listBox1.SelectedIndices[0] > 0)
        {
            int[] oldIndices =
                this.listBox1.SelectedIndices.Cast<int>().ToArray();        int[] newIndices =
                this.listBox1.SelectedIndices.Cast<int>()
                .Select(index => index - 1).ToArray();        int offest = oldIndices[0];        while (offest-- > 0)
            {
                this.listBox1.SelectedItems.Clear();            for (int i = 0; i < newIndices.Length; i++)
                {
                    object obj = this.listBox1.Items[newIndices[i]];
                    this.listBox1.Items[newIndices[i]] = this.listBox1.Items[newIndices[i] + 1];
                    this.listBox1.Items[newIndices[i] + 1] = obj;
                    this.listBox1.SelectedItems.Add(this.listBox1.Items[newIndices[i]]);
                }            newIndices = newIndices.Select(index => index - 1).ToArray();
            }
        }
    }private void button4_Click(object sender, EventArgs e)
    {
        // 置末
        if (this.listBox1.SelectedIndices.Count > 0 &&
            this.listBox1.SelectedIndices[this.listBox1.SelectedIndices.Count - 1] <
            this.listBox1.Items.Count - 1)
        {
            int[] oldIndices =
                this.listBox1.SelectedIndices.Cast<int>().ToArray();        int[] newIndices =
                this.listBox1.SelectedIndices.Cast<int>()
                .Select(index => index + 1).ToArray();        int offest = oldIndices[oldIndices.Length - 1];        while (offest++ < this.listBox1.Items.Count - 1)
            {
                this.listBox1.SelectedItems.Clear();            for (int i = newIndices.Length; i > 0; i--)
                {
                    object obj = this.listBox1.Items[newIndices[i - 1]];
                    this.listBox1.Items[newIndices[i - 1]] = this.listBox1.Items[newIndices[i - 1] - 1];
                    this.listBox1.Items[newIndices[i - 1] - 1] = obj;
                    this.listBox1.SelectedItems.Add(this.listBox1.Items[newIndices[i - 1]]);
                }            newIndices = newIndices.Select(index => index + 1).ToArray();
            }
        }
    }
      

  6.   

    我用2楼的方法 Remove -> Insert 感觉更好一点
    private void button5_Click(object sender, EventArgs e)
    {
        // 上移
        if (this.listBox1.SelectedIndices.Count > 0 &&
            this.listBox1.SelectedIndices[0] > 0)
        {
            int[] oldIndices =
                this.listBox1.SelectedIndices.Cast<int>()
                .ToArray();        int[] newIndices =
                this.listBox1.SelectedIndices.Cast<int>()
                .Select(index => index - 1).ToArray();        object[] objs =
                this.listBox1.Items.Cast<object>()
                .Select((value, index) => new { value, index })
                .Where(item => oldIndices.Contains(item.index))
                .Select(item => item.value).ToArray();        for (int i = oldIndices.Length; i > 0; i--)
                this.listBox1.Items.RemoveAt(oldIndices[i - 1]);        for (int i = 0; i < newIndices.Length; i++)
            {
                this.listBox1.Items.Insert(newIndices[i], objs[i]);
                this.listBox1.SelectedItems.Add(objs[i]);
            }
        }
    }private void button6_Click(object sender, EventArgs e)
    {
        // 下移
        if (this.listBox1.SelectedIndices.Count > 0 &&
            this.listBox1.SelectedIndices[this.listBox1.SelectedIndices.Count - 1] <
            this.listBox1.Items.Count - 1)
        {
            int[] oldIndices =
                this.listBox1.SelectedIndices.Cast<int>()
                .ToArray();        int[] newIndices =
                this.listBox1.SelectedIndices.Cast<int>()
                .Select(index => index + 1).ToArray();        object[] objs =
                this.listBox1.Items.Cast<object>()
                .Select((value, index) => new { value, index })
                .Where(item => oldIndices.Contains(item.index))
                .Select(item => item.value).ToArray();        for (int i = oldIndices.Length; i > 0; i--)
                this.listBox1.Items.RemoveAt(oldIndices[i - 1]);        for (int i = 0; i < newIndices.Length; i++)
            {
                this.listBox1.Items.Insert(newIndices[i], objs[i]);
                this.listBox1.SelectedItems.Add(objs[i]);
            }
        }
    }private void button7_Click(object sender, EventArgs e)
    {
        // 置顶
        if (this.listBox1.SelectedIndices.Count > 0 &&
            this.listBox1.SelectedIndices[0] > 0)
        {
            int[] oldIndices =
                this.listBox1.SelectedIndices.Cast<int>()
                .ToArray();        int offest = oldIndices[0];        int[] newIndices =
                this.listBox1.SelectedIndices.Cast<int>()
                .Select(index => index - offest).ToArray();        object[] objs =
                this.listBox1.Items.Cast<object>()
                .Select((value, index) => new { value, index })
                .Where(item => oldIndices.Contains(item.index))
                .Select(item => item.value).ToArray();        for (int i = oldIndices.Length; i > 0; i--)
                this.listBox1.Items.RemoveAt(oldIndices[i - 1]);        for (int i = 0; i < newIndices.Length; i++)
            {
                this.listBox1.Items.Insert(newIndices[i], objs[i]);
                this.listBox1.SelectedItems.Add(objs[i]);
            }
        }
    }private void button8_Click(object sender, EventArgs e)
    {
        // 置末
        if (this.listBox1.SelectedIndices.Count > 0 &&
            this.listBox1.SelectedIndices[this.listBox1.SelectedIndices.Count - 1] <
            this.listBox1.Items.Count - 1)
        {
            int[] oldIndices =
                this.listBox1.SelectedIndices.Cast<int>()
                .ToArray();        int offest =
                (this.listBox1.Items.Count - 1)
                - oldIndices[oldIndices.Length - 1];        int[] newIndices =
                this.listBox1.SelectedIndices.Cast<int>()
                .Select(index => index + offest).ToArray();        object[] objs =
                this.listBox1.Items.Cast<object>()
                .Select((value, index) => new { value, index })
                .Where(item => oldIndices.Contains(item.index))
                .Select(item => item.value).ToArray();        for (int i = oldIndices.Length; i > 0; i--)
                this.listBox1.Items.RemoveAt(oldIndices[i - 1]);        for (int i = 0; i < newIndices.Length; i++)
            {
                this.listBox1.Items.Insert(newIndices[i], objs[i]);
                this.listBox1.SelectedItems.Add(objs[i]);
            }
        }
    }