我正在用一個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啓動時,用戶無法在我的「控制檯」上像窗口一樣滾動以做出翔實的決定。要臨時解決此問題,我在啓動時啓動控制檯,請參閱this,並將運行可執行文件的進程的輸出流寫入控制檯,以便用戶可以滾動瀏覽信息並作出決定。
我正在使用列表框來顯示文本塊的集合,請參閱this。我沒有附加任何東西來製作顯示屏或MessageBox。
我該如何製作一個「控制檯」,如顯示器,它將接受用戶輸入(MessageBox,直接輸入等),還允許他們在做出決定之前滾動瀏覽數據?
編輯: 至於我收到的意見,我不清楚我想要完成什麼。我有一個批處理文件,每次運行多次使用不同的參數運行可執行文件。可執行調用之前和之間有很多設置。我創建了一個可執行文件,用於使用下拉菜單替換許多類似的批處理文件,以便用戶在運行時更改設置。當用戶喜歡他們的設置時,他們點擊一個「開始」按鈕,然後離開它進行設置並提出問題,然後最終運行可執行文件。
我的問題是當被調用的可執行文件在我的內部完成運行時,用戶需要決定是否由於不同的原因再次運行它。我需要提醒用戶「再次運行 - '是'或'否'?」,這就是我遇到問題的地方。 MessageBox不允許我在我的進度窗口上滾動。我嘗試了一個Modeless對話框,但是使用Show()程序繼續,並且ShowDialog()與MessageBox相同。
如何做到這一點的任何建議,將不勝感激。
你的問題不清楚。你沒有顯示你的「問題代碼」的例子,但提供許多無用的信息。如果你不想阻塞你的窗口 - 使用無模式對話框。 – Maximus 2013-02-21 18:34:19
你確實需要一個消息框嗎?您是否可以在窗口底部留言2個按鈕是和否? – failedprogramming 2013-02-21 22:29:57
@Maximus我確實嘗試了這個,但是使用Show()它只是繼續,而使用ShowDialog()它不會讓我滾動。 – Bluto 2013-02-22 14:37:15