Я пытаюсь понять чередующийся 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: переключатель в функции выше отключается, я отлаживал его; поэтому проблема не в вызове...
Я не думаю, что вы можете сделать это напрямую.
Способ избавиться от 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;
}