首页 > 解决方案 > 在 C# 中,如何在单击 Windows 窗体中的按钮后将某些内容打印到控制台?

问题描述

我正在使用 Visual Studio 2019 和 Windows 窗体(.NET 框架),我有一个带有按钮的 Windows 窗体。单击名为“btnPrint”的按钮后,我想在控制台上打印一些东西。我不知道该放什么代码。

我试过 Console.WriteLine("Hello World!") 但没有显示控制台。我等了几分钟,希望有什么东西出现,但这需要很长时间,所以我终止了程序。

这是我的代码:

  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;
  using System.Windows.Forms;

  namespace Windows
  {
      public partial class Form1 : Form
      {
            public Form1()
            {
                 InitializeComponent();
            }

            private void btnPrint_Click(object sender, EventArgs e)
            {
                 Console.WriteLine("Hello World!");
            }
      }
   }

标签: c#buttonprintingconsolewindows-forms-designer

解决方案


看起来您正在运行 Windows 窗体应用程序。默认情况下,您尝试访问的控制台Console.WriteLine()不可用。此命令仅适用于控制台应用程序(参见官方文档中的说明)。

如果您在 Visual Studio 中运行应用程序,您应该会Hello World!在 Visual Studio 的输出窗口中看到该消息。

将输出添加到代码的一些方法:

分配控制台

如果您真的希望为您的 Forms 应用程序打开一个控制台。你可以看看这个答案。这将打开控制台,以便您可以使用它。但是,如果您关闭控制台,您的整个应用程序将关闭。

这是从上面链接的答案中复制的代码:

using System.Runtime.InteropServices;

private void Form1_Load(object sender, EventArgs e)
{
    // This will open up the console when the form is loaded.
    AllocConsole();
}

[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AllocConsole();

富文本框

为表单应用程序获取某种控制台的另一种方法是将输出添加到表单本身,例如RichTextBox. 并将您的信息写成RichTextBox这样:

// Print the text
MyRichTextBox.AppendText("Hello World!\n" + output);
// Scroll the RichTextBox down
MyRichTextBox.ScrollToCaret();

调试日志

如果将 Visual Studio 之类的调试器附加到 Form 应用程序,Console.WriteLine()也可以使用Debug.WriteLinefrom 。System.Diagnostics输出将显示在 Visual Studio 的输出窗口中。

即使在您构建了应用程序之后,这也将起作用。

控制台应用程序

您还可以创建一个控制台应用程序,以便控制台始终处于启动状态。然后,在控制台应用程序中,您可以创建一个新表单来进行所有 From 交互。
这是一种解决方法,但应该可以。


推荐阅读