是否存在編輯在C#控制檯應用程序文本的方法嗎?換句話說,是否可以在命令行上放置預定義的文本,以便用戶可以修改文本,然後將其重新提交給應用程序?
回答
我想到的一件事是......模擬擊鍵。 並採用一個簡單的例子的SendKeys:
static void Main(string[] args)
{
Console.Write("Your editable text:");
SendKeys.SendWait("hello"); //hello text will be editable :)
Console.ReadLine();
}
注意:這僅適用於活動窗口。
是的。您需要使用Console的方法SetCursorPosition。例如:
Console.WriteLine("hello");
Console.SetCursorPosition(4, 0);
Console.WriteLine(" ");
它會顯示「地獄」 您需要的ReadLine方法,讓你在控制檯中編輯正符號(默認字符串),並從用戶返回字符串的定製實現。這是我的例子:
static string ReadLine(string Default)
{
int pos = Console.CursorLeft;
Console.Write(Default);
ConsoleKeyInfo info;
List<char> chars = new List<char>();
if (string.IsNullOrEmpty(Default) == false) {
chars.AddRange(Default.ToCharArray());
}
while (true)
{
info = Console.ReadKey(true);
if (info.Key == ConsoleKey.Backspace && Console.CursorLeft > pos)
{
chars.RemoveAt(chars.Count - 1);
Console.CursorLeft -= 1;
Console.Write(' ');
Console.CursorLeft -= 1;
}
else if (info.Key == ConsoleKey.Enter) { Console.Write(Environment.NewLine); break; }
//Here you need create own checking of symbols
else if (char.IsLetterOrDigit(info.KeyChar))
{
Console.Write(info.KeyChar);
chars.Add(info.KeyChar);
}
}
return new string(chars.ToArray());
}
此方法將顯示字符串默認。希望我明白你的問題是正確的(我懷疑它)
你能澄清一點嗎?我不確定我明白。我將這段代碼放在了一個新的控制檯應用程序中,它確實顯示「地獄」,但是如何幫助我在命令行上編輯該文本? – Chev
+1無需參考System.Windows.Forms –
很好的答案。對於SendKeys有問題的用戶非常有用! –
- 1. 使用文本編輯器的Ruby控制檯應用程序?
- 2. C++應用程序中的控制檯
- 3. C#控制檯應用程序中斷?
- 4. C# - 在控制檯應用程序
- 5. 在C#控制檯應用程序
- 6. 控制檯應用程序引用的C#版本控制
- 7. 在Linux中編譯C++控制檯應用程序
- 8. 在C++控制檯應用程序中編寫sql查詢?
- 9. 如何在Ubuntu中編譯C++控制檯應用程序
- 10. xcode編譯控制檯應用程序 - c編程
- 11. C#控制檯應用程序 - 在運行時編輯用戶設置
- 12. Chrome控制檯+文本編輯器
- 13. 如何以編程方式在控制檯應用程序中選擇文本?
- 14. 編程使用C#控制檯應用程序
- 15. 控制檯應用程序如cmd編輯
- 16. 允許用戶在C#asp.net應用程序中編輯文本
- 17. 在C#.NET控制檯應用程序中使用OCX控件
- 18. Facebook,C#和控制檯應用程序
- 19. C#控制檯應用程序Dartgame
- 20. C#無控制檯應用程序
- 21. C#控制檯應用程序 -
- 22. 發佈C#控制檯應用程序
- 23. C++控制檯應用程序MVC
- 24. C++控制檯應用程序
- 25. Nodej.s C++控制檯應用程序
- 26. 控制檯應用程序拖放「C#」
- 27. C#控制檯應用程序圖標
- 28. c#控制檯應用程序參數
- 29. C#控制檯應用程序
- 30. C#控制檯和Windows應用程序
我不相信我的問題是提供的問題的重複。我的需求更爲具體,就這個問題給出的答案並沒有回答這個問題。據我所知,Console類沒有任何東西可以幫助將可編輯文本放在命令行上。 – Chev
除非您編程,否則在控制檯應用程序中沒有命令行。這可以通過Console類來完成。編輯:cmd行是shell,用來啓動控制檯應用程序。當它正在運行並且你正在輸出東西到控制檯窗口時,你並沒有使用shell命令,即命令行。你應該解釋已經被按下的鍵並且根據鍵執行特定的動作(例如,當按下退格鍵時將光標移回一個字符)。' –
@Alex Ford:關於「更具體」 - 「我怎麼做打印詮釋「是更具體然後」我如何打印對象「,看到沒有區別。 – agibalov