Mat*_*nis 7 c# wpf visual-studio
我有一个 WPF 应用程序,我想添加一个按钮来打开控制台窗口并显示 Console.WriteLine 消息。它不一定是一个 CMD 控制台,只是一个类似模拟的显示框。
我的想法是创建一个带有 ScrollViewer/TextBox 的 Console.xaml 窗口,并使用类似的方法重定向 WriteLine,但我无法让它工作:
XAML
<ScrollViewer Name="Scroller" Margin="0" Background="#FF000128">
<TextBlock Name="OutputBlock" Foreground="White" FontFamily="Consolas"/>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
C#
System.Diagnostics.Debug.WriteLine("hello", console.OutputBlock.Text);
Run Code Online (Sandbox Code Playgroud)
构造函数
public Console(MainWindow mainwindow)
{
InitializeComponent();
this.mainwindow = mainwindow;
}
Run Code Online (Sandbox Code Playgroud)
我在 Photoshop 中用虚构的日志文本制作的示例
我尝试了这个解决方案,但我不确定如何使用它。我收到 OnStartup“找不到合适的方法来覆盖”错误:
我也尝试过这个解决方案。我完全复制了,但它充满了错误:
这段代码没有给出任何错误,但我不知道它应该如何使用:
我想出了一种非常粗略的方法,使用 ScrollView TextBlock 和 Inlines.Add() 而不是 Console.WriteLine(),但它正在做我需要的事情。
创建窗口 - LogConsole
XAML
<Grid>
<ScrollViewer Name="Scroller" Margin="0" Background="#FF000128">
<TextBlock Name="OutputBlock" Foreground="White" FontFamily="Consolas" Padding="10"/>
</ScrollViewer>
</Grid>
Run Code Online (Sandbox Code Playgroud)
启用将数据传递到 LogConsole
private MainWindow mainwindow;
public LogConsole() {}
public LogConsole(MainWindow mainwindow)
{
InitializeComponent();
this.mainwindow = mainwindow;
}
// Hide Window instead of Exiting
protected override void OnClosing(CancelEventArgs e)
{
this.Hide();
e.Cancel = true;
base.OnClosing(e);
}
Run Code Online (Sandbox Code Playgroud)
主窗口
方法-启动日志控制台隐藏
public MainWindow()
{
InitializeComponent();
// Start the Log Console
StartLogConsole();
}
// Method
public void StartLogConsole()
{
MainWindow mainwindow = this;
console = new LogConsole(mainwindow);
// window position
console.Left = this.Left + 0;
console.Top = this.Top + 0;
console.Hide();
}
LogConsole console = new LogConsole();
Run Code Online (Sandbox Code Playgroud)
打开日志控制台按钮
private void buttonLogConsole_Click(object sender, RoutedEventArgs e)
{
// window position
console.Left = this.Left + 0;
console.Top = this.Top + 0;
console.Show();
}
Run Code Online (Sandbox Code Playgroud)
将日志消息写入 ScrollView TextBlock
// Log Console Message
console.OutputBlock.Inlines.Add("Starting Application...\n");
Run Code Online (Sandbox Code Playgroud)
它在后台运行时始终记录并打开/关闭,而不会丢失文本。
| 归档时间: |
|
| 查看次数: |
10337 次 |
| 最近记录: |