Я написал приведенный ниже код из объединения учебников по c # о перенаправлении Console.Write
или Console.WriteLine
в текстовое поле текстового поля.Я понял, что это плохо, так как если я вызову какой-либо метод .Close()
, то текстовое поле будет удалено, что противоположно тому, что я хочу сделать.
Imports System.Text
Imports System.IO
Namespace ConsoleRedirection
Public Class TextBoxStreamWriter
Inherits TextWriter
Private _output As TextBox = Nothing
Public Sub New(ByVal output As TextBox)
_output = output
End Sub
Public Overrides Sub WriteLine(ByVal value As String)
MyBase.WriteLine(value)
_output.AppendText(String.Format("[{0}] {1}" + vbNewLine, DateTime.Now, value.ToString()))
End Sub
Public Overrides ReadOnly Property Encoding As Encoding
Get
Return System.Text.Encoding.UTF8
End Get
End Property
End Class
End Namespace
Есть ли в любом случае, помимо загрузки текстового файла,чтобы я мог перенаправить весь вывод консоли на текстовое поле?
Чтобы ответить на вопрос из комментариев.(Этот код был первоначально найден здесь: https://saezndaree.wordpress.com/2009/03/29/how-to-redirect-the-consoles-output-to-a-textbox-in-c/... Но был преобразован в VB)
В отдельной форме код вызывается объявлением TextWriter.
Private _writer As TextWriter = New TextBoxStreamWriter(frmDebugLog.txtDebugLog)
Затем как часть .Load
родительской формы:
Console.SetOut(_writer)
В более поздней части формы frmDebugLog вызывается с помощью frmDebugLog.Show()
Когда это окно, frmDebugLog
, закрыто ... эта форма и ее текстовое поле отбрасываются.