Добавление элементов снизу вверх в списке - PullRequest
1 голос
/ 01 декабря 2011

У меня есть два списка, с которыми я работаю. Один заполнен предметами, а другой пуст. Когда пользователь дважды щелкает элемент в заполненном списке, он должен добавить этот элемент в пустой / второй список, но вместо того, чтобы добавить его в начало этого списка, я хочу, чтобы новый добавленный элемент находился внизу. Таким образом, элементы должны быть добавлены снизу вверх. Я работаю с сеткой просмотра данных, но готов использовать listview / listbox, если он выполняет свою работу.

Ответы [ 3 ]

2 голосов
/ 01 декабря 2011

Я добавил два списка в форму окна. listBox1 и listBox2 Я добавил Семь Предметов в первый список {One, Two, Three ...} Я добавил обработчик событий двойного щелчка, где я

  listBox2.Items.Add(listBox1.SelectedItem);

Новый элемент добавлен в конец списка, что звучит так, как вы хотите. Я знаю, что то же самое работает с DataGridView.

Хотите ли вы, чтобы они физически добавлялись в нижнюю часть окна, оставляя пробелы сверху до его заполнения? Это то, что вы пытаетесь сделать?

Извините, это не совсем ответ, наверное, мне не хватает представителя, чтобы ответить в качестве комментария.


EDIT: хорошо, я думаю, что у меня есть ваш ответ сейчас Добавьте список со своими элементами, он не обязательно должен быть списком, ваш Datagridview будет работать нормально.

Попробуйте использовать FlowControlPanel и измените выравнивание снизу вверх, звучит просто, да, это так. Добавьте метки к нему, как это

//add a label to the flow control panel when you double click on an item
private void listBox1_DoubleClick(object sender, EventArgs e)
    {
        Label label = new Label();
        label.Text = listBox1.SelectedItem.ToString();
        label.Click += new EventHandler(label_Click);
        label.AutoSize = true;
        flowLayoutPanel1.Controls.Add(label);
        label.BringToFront();
    }
    //Will remove the label if you click on it.
    void label_Click(object sender, EventArgs e)
    {
        ((Label)sender).Click -= new EventHandler(label_Click);
        ((Label)sender).Dispose();
    }

Если наклеить ярлык вперед, то новый будет внизу.

0 голосов
/ 02 декабря 2011

Попробуйте мой код.Я использую C # 3.5

    private void listBox1_DoubleClick(object sender, EventArgs e)
    {
        if (listBox1.SelectedItem != null)
        {
            int index = listBox2.Items.Count>0?listBox2.Items.Count:0;
            listBox2.Items.Insert(index, listBox1.SelectedItem);
            listBox1.Items.Remove(listBox1.SelectedItem);
        }
    }
0 голосов
/ 01 декабря 2011

Мне кажется, я понимаю, что вы хотите сделать, и единственный известный мне способ - это подделать его, предварительно заполнив второй список / таблицу данных пустыми элементами, чтобы пользователь ничего не увидел. Затем, когда ваш пользователь выбирает из вашего первого окна, вы замените самый нижний пустой элемент новым реальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...