子过程包含一个列表,但只有第一个项目通过SetCursorPosition

时间:2017-05-29 18:21:01

标签: vb.net console-application

Module Module1

Dim MenuList As New List(Of String)

Function LineCount() As Integer
    Return MenuList.Count
End Function

Sub CreateNewMenu(strings() As String)
    For Each s In strings
        MenuList.Add(s)
    Next
End Sub

Sub PrintMenu(highlight As Integer)
    For I = 0 To MenuList.Count - 1
        If I = highlight Then
            SwapColors()
            Console.WriteLine(MenuList(I))
            Console.ResetColor()
        Else
            Console.WriteLine(MenuList(I))
        End If
    Next
End Sub

Sub SwapColors()
    Dim temp = Console.BackgroundColor
    Console.BackgroundColor = Console.ForegroundColor
    Console.ForegroundColor = temp
End Sub

Sub Main()
    CreateNewMenu(
        {
            "Option A",
            "Option B",
            "Option C"
        })
    Dim CurrentItem As Integer = 0
    Dim CurrentKey As ConsoleKey
    While CurrentKey <> ConsoleKey.Enter
        Console.Clear()

        PrintMenu(CurrentItem)

        'Console.SetCursorPosition(10, 10)

        'Console.SetCursorPosition(10, 11)

        'Console.SetCursorPosition(10, 12)

        CurrentKey = Console.ReadKey(True).Key
        Select Case CurrentKey

            Case ConsoleKey.DownArrow
                CurrentItem += 1

            Case ConsoleKey.UpArrow
                CurrentItem -= 1

        End Select
        CurrentItem = (CurrentItem + LineCount()) Mod LineCount()
    End While

End Sub

End Module

这是一个代码,一个改变的帖子写于2014年。以下链接应该是来源。 How can you detect key presses in vb console mode?

主子程序中发现的PrintMenu程序是我尝试使用SetCursorPosition命令更改的行。

我能够在第10行第10行更改要筛选的输出。但仅适用于选项A.

要管理可在屏幕上列出的所有项目,必须做些什么?我想通过PrintMenu过程更改每个项目的行和行。

1 个答案:

答案 0 :(得分:0)

问题是为列表中的第一项设置了光标位置,但是当调用[root@mesos3 ~]# /opt/zookeeper/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Mode: leader 时,光标位置被重置为column = 0的下一行。我会更改{{1接受左侧和顶部光标位置的方法。像这样(未经测试):

WriteLine