请问如何在winform中添加仿命令提示符功能?

btman52 2012-09-12 02:39:25
手头有一个winform程序,其中某个功能模块实现的功能较多,而且有不少的拓展,不可能以listbox、combobox的方式显示在窗体中。
这时想到了使用命令行方式,但是未找到在winform下创建新的console窗口的方法。
之后想到了利用多行textbox模拟(其实这个更合乎本意,因为原本的设想就是将其放在一个tab中),但是如果是只读,则无法捕获用户输入的数据;如果是非只读,那么在用户删除输入内容时原有的内容可能会被误删。
整个程序就这样卡在了这里,求高人解答,最好能嵌套在tabcontrol中,利用第三方控件也是可以的。
(另写一个命令行程序来调用很不实际,初始化参数中有一个byte[256]的数组无法传递,借助临时文件又太繁琐了)
...全文
173 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
btman52 2012-09-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
自己做一个吧,很简单
每次系统输出的时候记录下文本的长度
然后在可能更改文本的相关事件里判断一下插入点或选区的位置
如果处于不应该被更改的内容中就中断掉。

我的F# Interactive就是这么做的。因为要支持彩色输出,所以继承的是RichTextBox。
[/Quote]
好的,我去试试,在这里纠结了很久,非常感谢。
hhddzz 2012-09-12
  • 打赏
  • 举报
回复
自己做一个吧,很简单
每次系统输出的时候记录下文本的长度
然后在可能更改文本的相关事件里判断一下插入点或选区的位置
如果处于不应该被更改的内容中就中断掉。

我的F# Interactive就是这么做的。因为要支持彩色输出,所以继承的是RichTextBox。
蒋晟 2012-09-12
  • 打赏
  • 举报
回复
你可以像Visual Studio一样启动一个控制行进程然后重定向其输入输出到你的程序。不过你的模块似乎是进程内的?Windows Forms没有合适的控件可以再找别家的嘛,不一定非要切换到对用户不友好的命令行。
btman52 2012-09-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你可以像Visual Studio一样启动一个控制行进程然后重定向其输入输出到你的程序。不过你的模块似乎是进程内的?Windows Forms没有合适的控件可以再找别家的嘛,不一定非要切换到对用户不友好的命令行。
[/Quote]
另外这个模块确实是进程内部的,初始化这个模块有一系列配置参数,启动新的命令行程序的话初始化参数传递是个问题(主要是一个byte[256],还有一个自定义的struct)。另外为了美观起见这个模块的外壳是与其他模块并列放置于一个tabcontrol中,启动新的命令行还要想方法将命令行窗体作为子窗体,太繁琐(而且还不知效果如何)。
btman52 2012-09-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你可以像Visual Studio一样启动一个控制行进程然后重定向其输入输出到你的程序。不过你的模块似乎是进程内的?Windows Forms没有合适的控件可以再找别家的嘛,不一定非要切换到对用户不友好的命令行。
[/Quote]
那个工具是关于网络安全的一个小工具,使用命令行应该是最简洁友好的方式了,毕竟其插件提供的命令可能会数十上百,我实在想不出除了命令行还有什么方式能简洁明快地作为这个模块的显示。
也想过使用其他控件库,但是一直没找到。如果您知道这样的第三方控件还烦请告知,感激不尽。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧