我正在用一个 WPF 可执行文件替换许多几乎完全相同的批处理文件。我已经编写了程序,但是我的“控制台”(如显示)出现了问题。
在程序中,我调用一个可执行文件来执行任务。该可执行文件将其输出消息发送到控制台。我可以将它们重定向到我的“控制台”,例如显示以下内容。
Process p = new Process();
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.FileName = MyExecutable;
p.StartInfo.Arguments = MyArguments;
p.Start();
while (!p.StandardOutput.EndOfStream)
{
string _output = p.StandardOutput.ReadLine();
// This is my display string ObservableCollection
_displayString.Add(new DisplayData { _string = _output, _color = System.Windows.Media.Brushes.Black, _fontSize = 12 });
// This is to redirect to a Console & what I want to get rid of
Console.WriteLine(_output);
}
p.WaitForExit();
当可执行文件完成运行后,我使用 MessageBox 询问用户是否要再次运行可执行文件。问题是,当 MessageBox 启动时,用户无法在我的“控制台”之类的窗口上滚动以做出信息决定。为了临时解决这个问题,我在启动时启动了一个控制台,查看这个,并将运行可执行文件的进程的输出流写入控制台,以便用户可以滚动浏览信息并做出决定。
我正在使用列表框来显示文本块的集合,请参阅此。我没有附加任何用于制作显示或 MessageBox 的东西。
我怎样才能制作一个类似于显示的“控制台”,它将接受用户输入(MessageBox、直接输入等),但还允许他们在做出决定之前滚动浏览数据?
编辑: 至于我收到的评论,我不清楚我要完成什么。我有一个批处理文件,它多次运行一个可执行文件,每次运行时使用不同的参数。在可执行调用之前和之间有很多设置。我创建了一个可执行文件,用下拉菜单替换类似批处理文件的多种风格,供用户在运行时更改设置。当用户喜欢他们的设置时,他们单击“开始”按钮,然后它会进行设置并提示问题,然后最终第一次运行可执行文件。
我的问题是当我的内部调用的可执行文件完成运行时,用户需要决定是否出于不同的原因再次运行它。我需要提示用户“再次运行 - '是'还是'否'?”,这就是我遇到问题的地方。MessageBox 不允许我在进度窗口上滚动。我尝试了一个无模式对话框,但使用 Show() 程序继续运行,并且 ShowDialog() 与 MessageBox 的问题相同。
任何有关如何执行此操作的建议将不胜感激。