7
A
回答
14
如果你指的是窗口的最後一行,則可以使用的Console.CursorTop
,並且Console.WindowHeight
和Console.WindowTop
的混合物。示例代碼:
using System;
class Test
{
static void Main()
{
Console.Write("Hello");
WriteOnBottomLine("Bottom!");
Console.WriteLine(" there");
}
static void WriteOnBottomLine(string text)
{
int x = Console.CursorLeft;
int y = Console.CursorTop;
Console.CursorTop = Console.WindowTop + Console.WindowHeight - 1;
Console.Write(text);
// Restore previous position
Console.SetCursorPosition(x, y);
}
}
注意,這必須考慮的Console.WindowTop
找出你在哪裏,在緩衝區內...
+0
謝謝,我只是寫這個,但我很高興我GOOGLE了。我可以建議編輯你的功能將光標移動到左邊= 0嗎?我假設任何需要寫入屏幕底部的人可能也想寫在屏幕的左側。 – Sidney 2015-09-11 19:57:20
+0
@Sidney:你的意思是'Console.CursorLeft = Console.WindowLeft'? (我目前沒有時間在各種配置中進行測試。) – 2015-09-12 12:07:35
1
我也不得不解決這個問題,並與該出來了:
public class Program
{
static int id = 0 , idOld = 0, idSelected = -1;
static string[] samples;
public static void Main()
{
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WindowWidth = 90;
Console.WindowHeight = 36;
Console.WindowTop = 5;
Console.Title = "My Samples Application";
Console.InputEncoding = Encoding.GetEncoding("windows-1251");
samples = new string[50];
for (int i = 0; i < samples.Length; i++)
samples[i] = "Sample" + i;
LoopSamples();
}
static void SelectRow(int y, bool select)
{
Console.CursorTop = y + 1;
Console.ForegroundColor = select ? ConsoleColor.Red : ConsoleColor.Yellow;
Console.WriteLine("\t{0}", samples[y]);
Console.CursorTop = y;
}
static void LoopSamples()
{
int last = samples.Length - 1;
ShowSamples();
SelectRow(0, true);
while (true)
{
while (idSelected == -1)
{
idOld = id;
ConsoleKey key = Console.ReadKey(true).Key;
switch (key)
{
case ConsoleKey.UpArrow:
case ConsoleKey.LeftArrow: if (--id < 0) id = last; break;
case ConsoleKey.DownArrow:
case ConsoleKey.RightArrow: if (++id > last) id = 0; break;
case ConsoleKey.Enter: idSelected = id; return;
case ConsoleKey.Escape: return;
}
SelectRow(idOld, false);
SelectRow(id, true);
}
}
}
static void ShowSamples()
{
Console.Clear();
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("Use arrow keys to select a sample. Then press 'Enter'. Esc - to Quit");
for (int i = 0; i < samples.Length; i++)
Console.WriteLine("\t{0}", samples[i]);
}
}
相關問題
- 1. c#將光標設置爲「在後臺工作」光標
- 2. 控制檯寫入光標位置
- 3. 如何在C++中將光標位置設置爲行首?
- 4. 將控制檯光標設置爲粗/細
- 5. 將光標位置設置爲下一個輸入的開頭
- 6. 將Team Viewer(8)設置爲在後臺運行(不可見)(Windows)
- 7. VIM設置光標位置
- 8. 設置光標位置
- 9. C++ win32設置光標位置
- 10. 將插入/光標位置設置爲一個可滿足的div的末尾
- 11. 將屬性設置爲最後位置
- 12. 將光標設置爲禁用控件
- 13. 將控制位置設置爲原始
- 14. Qt - QTextStream - 如何將光標位置設置爲行首?
- 15. 設置光標位置
- 16. 設置光標位置
- 17. 自動設置控制檯xy位置
- 18. 如何將光標移動到RichTextBox最後一行的第一個位置?
- 19. 將光標設置爲JTextfield
- 20. 將範圍設置爲最後一行
- 21. 將C#控制檯應用程序位置設置爲輔助屏幕
- 22. 控制在UITextField中的光標位置
- 23. wxpython:將光標設置爲絕對屏幕位置並單擊
- 24. C#自定義控件光標位置
- 25. C#工具提示:需要將光標可見性設置爲false
- 26. c#將控制檯輸出複製到第二個位置
- 27. 如何更改控制檯中的光標位置?
- 28. 我是否可以將默認光標更改爲等待光標以獲取form.design中的設置位置? C#
- 29. 如何將RichTextBox光標設置爲最後?
- 30. 將控件移動到光標位置?
定義'最後可見行'。你的意思是文本的最後一行(光標應該是它們的自動)還是在可見窗口的底部,而不管文字是否存在? – AllenG 2010-08-04 16:19:39
在可見窗口的底部,不管文字已經存在。 – Peter 2010-08-04 21:53:30