C#输入和输出在同一个RichTextBox控件

时间:2016-02-07 02:04:10

标签: c# winforms console io-redirection

我正在尝试找到有关如何在richtextbox中重新创建控制台的想法。 我发现的第一个想法是重定向同时运行的隐形控制台应用程序的输出。 其次,使用两个文本框,一个用于输出,一个用于输入。

我遇到这两个问题的原因是我不知道应该订阅哪个事件。是的,我整天都在互联网上查看,但我发现最接近的是有人在VB中这样做。所以我的问题:

  1. 与我列出的想法有什么不同吗?
  2. 是否可以只为输入和输出提供一个rTextBox?
  3. 如果重定向是最佳解决方案,请任何人解释我如何设置重定向;我创建了一个单独的文件(poker.cs),它设置为通过控制台运行。如果你看看这里的最佳答案: Redirect console output to textbox in separate program 他有两个功能,但我不知道如何设置我的richTextBox并运行.cs文件;也可能是我使用了错误的事件。我一直在从负载运行它。
  4. 我绝对希望将richTextBox像运行控制台一样运行。我知道可以做到。我想相信。

2 个答案:

答案 0 :(得分:0)

不要搜索术语“控制台”,否则它会引导您输入错误的帖子,它将导致控制台程序,而不是像您正在创建的那样的表单程序。

将输入从文本框重定向到另一个文本框非常容易,首先挂钩到第二个文本框的KeyUp事件,即用户输入的事件。

在那里你可以检查按下的键是否返回,在这种情况下选择文本框的文本,将其附加到第一个文本框的文本并清除第二个文本框中的文本,如下所示:

    private void inputTextBox_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Return)
        {

            consoleRichBox.Text += inputTextBox.Text + "\r\n";
            inputTextBox.Text = "";
            e.Handled = true;

        }
    }

答案 1 :(得分:0)

这为您提供了cammand提示的输出:

using System.Diagnostics;
private static string CaptureCommandPromptOutput(string command, string argument)
{
    ProcessStartInfo info = new ProcessStartInfo(command, argument);
    info.RedirectStandardOutput = true;
    info.UseShellExecute = false;
    info.CreateNoWindow = true;
    Process p = new Process();
    p.StartInfo = info;
    p.Start();
    return p.StandardOutput.ReadToEnd();
}  

并使用它:

richTextBox1.Text = CaptureCommandPromptOutput("cmd", "dir C:\");