我想用.Net创建命令行文本编辑器。建议在.NET中创建命令行文本编辑器
我总是在做图形用户界面应用程序,所以我对完成这项任务有点失落。我需要知道的第一件事情是如何创建可滚动的编辑区。一个我可以写任何我想要的东西并上下移动的地方。也许存在一个我没有找到的即可使用的框架。所以出于这个原因我在征求意见。
另一件事是如何创建一个菜单栏,在滚动时不会随编辑区域一起移动。
总结我想为Windows控制台创建一个非常简单的编辑器,如EDIT。
我想用.Net创建命令行文本编辑器。建议在.NET中创建命令行文本编辑器
我总是在做图形用户界面应用程序,所以我对完成这项任务有点失落。我需要知道的第一件事情是如何创建可滚动的编辑区。一个我可以写任何我想要的东西并上下移动的地方。也许存在一个我没有找到的即可使用的框架。所以出于这个原因我在征求意见。
另一件事是如何创建一个菜单栏,在滚动时不会随编辑区域一起移动。
总结我想为Windows控制台创建一个非常简单的编辑器,如EDIT。
我不知道CUA是什么意思,但是...
您可以使用Console.SetCursorPosition()来设置光标的位置,以允许您随时随地进行写操作。
例如:
public void Run()
{
Console.WriteLine("Hello, World.");
Console.WriteLine("buffer size: (w,h)= ({0},{1})", Console.BufferWidth, Console.BufferHeight);
Console.WriteLine("position= ({0},{1})", Console.CursorLeft, Console.CursorTop);
Console.WriteLine("Hello, again.");
Console.WriteLine("position= ({0},{1})", Console.CursorLeft, Console.CursorTop);
int x= 2000;
Console.WriteLine("\n\n\nCounting to {0}...", x);
int left= Console.CursorLeft;
int top= Console.CursorTop;
for (int i= 0; i < x; i++)
{
Thread.Sleep(5);
Console.SetCursorPosition(left, top);
Console.Write("{0,6}",i);
}
Console.WriteLine("\n\n\ndone.");
}
鉴于这种能力,然后你可以建立更强大的小工具,如菜单栏,命令栏,依此类推。
我不知道如何使用托管代码在控制台的指定位置“读取”文本;你可以通过pInvoke来完成。您需要从屏幕读取以支持剪切/粘贴操作,搜索等。即使有pInvoke的可能性,我也会建议采用双缓冲写入方法,在您的托管代码中维护您写入屏幕的缓存。事情是这样的:
然后,当你需要从“控制台”阅读,只是从你的缓冲区中读取。这样可以避免每次读取都会跨越pInvoke阈值,而这个开销很大。
有了这些成分,您就拥有了控制台模式编辑器的基本构建模块。
有趣的答案,即时看到现在的专家主页。创建Console.Form的目的之一是重新创建Edit.exe,即我想要做的同样的事情,:)。我要玩代码,看看会出现什么 – mjsr 2011-02-27 16:39:25
你为什么要这样做?你希望完成一个正常的基于窗口的人不会做100倍好? – 2011-02-27 12:21:13
@ LasseV.karlsen我想创建一个CUA文本编辑器,该命令行在命令行中运行,以便在没有GUI访问权限的情况下远程执行操作。有成千上万的优秀编辑,但命令行编辑人员不是CUA兼容的,如果他们是,他们已被弃用。目标是保持简单,例如emacs有一个CUA模式,但我不喜欢它的工作方式,并且比文本编辑器多得多。 – mjsr 2011-02-27 12:33:03