gpt4 book ai didi

c# - 如何为 WPF 制作简单的只读输出日志控制台?

转载 作者:行者123 更新时间:2023-11-30 12:22:20 25 4
gpt4 key购买 nike

我有一个 WPF 应用程序,我想添加一个按钮来打开控制台窗口并显示 Console.WriteLine 消息。它不一定是 CMD 控制台,只是一个类似模拟的显示框。

我的想法是创建一个窗口,Console.xaml 和一个 ScrollViewer/TextBox 并使用类似这样的东西重定向 WriteLine 但我无法让它工作:

XAML

<ScrollViewer Name="Scroller" Margin="0" Background="#FF000128">
<TextBlock Name="OutputBlock" Foreground="White" FontFamily="Consolas"/>
</ScrollViewer>

C#

System.Diagnostics.Debug.WriteLine("hello", console.OutputBlock.Text);

构造函数

public Console(MainWindow mainwindow)
{
InitializeComponent();
this.mainwindow = mainwindow;
}

我在 Photoshop 中用虚构的日志文本制作的示例

Example Log Console

我试过这个解决方案,但我不确定如何使用它。我收到 OnStartup“找不到合适的方法来覆盖”错误:

https://stackoverflow.com/a/10416069/6806643

我也试过这个解决方案。我复制准确,但它充满了错误:

https://stackoverflow.com/a/14957478/6806643

此代码没有错误,但我不知道应该如何使用它:

https://stackoverflow.com/a/3058921/6806643

最佳答案

我使用 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>

启用将数据传递到 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);
}

主窗口

方法-启动日志控制台隐藏

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();

打开日志控制台按钮

private void buttonLogConsole_Click(object sender, RoutedEventArgs e)
{
// window position
console.Left = this.Left + 0;
console.Top = this.Top + 0;
console.Show();
}

将日志消息写入 ScrollView TextBlock

// Log Console Message
console.OutputBlock.Inlines.Add("Starting Application...\n");

它在后台运行时始终记录,打开/关闭时不会丢失文本。

Log Console

关于c# - 如何为 WPF 制作简单的只读输出日志控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41277425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com