Сдвиг спискаПросмотреть плитки?

1

Я пытаюсь понять чередующийся listView в С#.net уже несколько недель без каких-либо изменений.

Я уменьшил высоту/ширину формы (154x154) до того же размера плитки, что и изображение (элементы с картинками) в моем спискеView (который закреплен в форме2); когда отображается моя форма2, вы видите элемент [0] в спискеView... вот и все! (чего я хочу до сих пор, так хорошо!)

Я установил свойство scrollable в false, чтобы покончить с обоими полосами прокрутки (отлично работает до сих пор...)

Я зацепил обе стрелки влево и вправо GLOBALY (который работает так, как он был тщательно отлажен), и при нажатии правой клавиши со стрелкой он должен ВЕРТИКАЛЬНО воспитывать элемент [1] и так четвертый.

Клавиша со стрелкой ВЛЕВО будет поднимать предыдущий элемент до 0.

Я пробовал следующее, но это НИЧЕГО.

private void HotkeyHandler(int i)
    {
        {
            if (this.listView1.InvokeRequired)
            {
                SetHotkeyCallback p = new SetHotkeyCallback(HotkeyHandler);
                this.Invoke(p, new object[] { i });
            }
            else
            {
                switch (i)
                {
                    case 1:
                        listView1.View = View.List;

                        if (listView1.TopItem.Index > 0)
                        {
                            listView1.TopItem = listView1.Items[listView1.TopItem.Index - 1];
                        }

                        listView1.View = View.Tile;
                        break;

                    case 2:
                        listView1.View = View.List;

                        if (listView1.TopItem.Index < listView1.Items.Count)
                        {
                            listView1.TopItem = listView1.Items[listView1.TopItem.Index + 1];
                        }

                        listView1.View = View.Tile;
                        break;
                }
            }
        }
    }

Пожалуйста, помогите мне, я теряю сознание уже несколько недель.

EDIT: переключатель в функции выше отключается, я отлаживал его; поэтому проблема не в вызове...

  • 0
    Почему вы все время переключаетесь между List и Tile View? Почему вообще?
  • 0
    Я читал, что если вы устанавливаете scrollable в false и это тайл, вы должны переключиться на список, чтобы даже установить topitem (который явно даже не работает ...)
Показать ещё 11 комментариев
Теги:
listview

1 ответ

1
Лучший ответ

Я не думаю, что вы можете сделать это напрямую.

Способ избавиться от ScrollBars - это действительно установить Scrollable = false; , Но это означает, что он говорит: теперь ListView не будет прокручиваться.

Вот общий способ решения многих проблем с прокруткой: Поместите Listview в Panel и сделайте его настолько большим, насколько это необходимо, чтобы показать все Items.

Затем для прокрутки просто перемещайте LV вверх и вниз:

private void prepare_Click_1(object sender, EventArgs e)
{
    // we sit inside a Panel
    listView1.Parent = panel1;
    // initially they have the same size
    listView1.Size = panel1.Size;
    listView1.Location = Point.Empty;
    // a few test items
    for (int i = 0; i < 100; i++)
        listView1.Items.Add("Item " + i);
    // now grow the height to display all items:
    int cols = listView1.Width / listView1.TileSize.Width;
    listView1.Height = (listView1.Items.Count / cols) * listView1.TileSize.Height;
}

// moving the LV up looks like scrolling down..
private void scrollDown_Click(object sender, EventArgs e)
{
    listView1.Top -= listView1.TileSize.Height;
    if (listView1.Bottom < panel1.Height) 
        listView1.Top = -listView1.Height + panel1.Height;
}


// moving the LV down looks like scrolling up..
private void scrollUp_Click_1(object sender, EventArgs e)
{
    listView1.Top += listView1.TileSize.Height;
    if (listView1.Top > 0) listView1.Top = 0;
}
  • 0
    Моя форма установлена на 154x154, а просмотр списка закреплен внутри формы, которая установлена на 154x154. Теперь, когда генерируется мой listView (после заполнения элементов), элемент [0] отображается без полосы прокрутки (это изображение размером 154x154). Я попробую это и вернусь к вам ...
  • 0
    это не работает для меня ...
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню