在vb/c#.net中创建一个连续列表(如轮子)

在vb/c#.net中创建一个连续列表(如轮子),c#,vb.net,winforms,controls,C#,Vb.net,Winforms,Controls,在windows窗体应用程序中,我需要一个一次只显示一个列表项但可以连续滚动的列表。例如,如果我的列表项为: A B C D 如果D是显示的项目,我向下滚动,它将返回到A。这将类似于命运之轮(虽然这不是我使用它的目的)。我认为列表控件将有一个连续滚动选项,但我没有发现这样的选项 我想模拟一下(只是数字,而不是实际的锁): 您可以使用链接列表来模拟此操作。我相信您可以在winforms中使用相同的逻辑,以便ScrollSown的每个事件都可以显示下一项 控制台 var linkList = new

在windows窗体应用程序中,我需要一个一次只显示一个列表项但可以连续滚动的列表。例如,如果我的列表项为:

A B C D

如果D是显示的项目,我向下滚动,它将返回到A。这将类似于命运之轮(虽然这不是我使用它的目的)。我认为列表控件将有一个连续滚动选项,但我没有发现这样的选项

我想模拟一下(只是数字,而不是实际的锁):

您可以使用
链接列表来模拟此操作。我相信您可以在winforms中使用相同的逻辑,以便
ScrollSown
的每个事件都可以显示下一项

控制台

var linkList = new LinkedList<int>(new int[] { 1, 2, 3, 4 }.AsEnumerable());

var first = linkList.First;
LinkedListNode<int> current = first;

while (true)
{

   Console.WriteLine($"Current value {current.Value}, press enter to Go Gext");
   Console.ReadLine();
   current = current.Next ?? first;

}
var linkList=newlinkedlist(newint[]{1,2,3,4}.AsEnumerable());
var first=linkList.first;
LinkedListNode当前=第一个;
while(true)
{
WriteLine($“当前值{Current.value},按enter键转到Gext”);
Console.ReadLine();
当前=当前。下一个??第一个;
}


WinForms

public LinkedList<object> linkList;
public LinkedListNode<object> current;
public LinkedListNode<object> first;

public Form1()
{
    InitializeComponent();

    linkList = new LinkedList<object>(new object[] { "A", "B", "C", "D" }.AsEnumerable());
    first = linkList.First;
    current = first;
    listBox1.Items.Add(current.Value);
}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{

  current = current.Next ?? first;
  listBox1.Items.Add(current.Value);

}
公共链接列表链接列表;
公共链接列表节点当前;
首先是公共LinkedListNode;
公共表格1()
{
初始化组件();
linkList=newLinkedList(新对象[]{“A”、“B”、“C”、“D”}.AsEnumerable());
first=链接列表。first;
电流=第一;
listBox1.Items.Add(当前值);
}
私有无效列表框1\u SelectedIndexChanged(对象发送方,事件参数e)
{
当前=当前。下一个??第一个;
listBox1.Items.Add(当前值);
}

您可以考虑使用一个。当位置到达终点时,您必须手动将其设置回起点。向下滚动是什么意思?如果您的意思是向下滚动控件,这样会使所有用户都无法使用,因为控件不应该这样做。请告诉我们您为什么要这样做,可能有更好的解决方案。确保这不是一个XY问题。我不认为有一个简单的选项可以做到这一点。但是,如果它对您意义重大,您可以自己编写控件。如果不描述如何使用它,那么请求控件是没有意义的。什么是
ABCD
?图像?短信?还可以编写一个到
LinkedListNode
的控件来添加此功能。