【问题标题】:Changing font in a Console window in .NET在 .NET 的控制台窗口中更改字体
【发布时间】:2010-12-20 15:07:48
【问题描述】:

我已经构建了一个简洁的控制台应用程序,它基本上与用户机器上的 ASP.NET 项目进行交互。我有一个非常微不足道的需求,我需要做的就是在显示控制台窗口之前,我需要让它有黑色背景、浅绿色前景和 Lucida 字体。我可以通过使用 Console 类的静态方法来实现颜色部分。尽管课堂上没有任何关于更改字体的内容?有没有人能够以编程方式更改控制台字体?

任何帮助表示赞赏。

【问题讨论】:

  • 把它变成一个 WinForms 应用程序不是更容易吗?如果它的逻辑分离良好且松耦合,你应该能够只将一个 TextBox(或 RichTextBox?)添加到一个空的 Form 中,并且基本上完成了。我更喜欢这样的应用程序而不是定制的控制台应用程序。

标签: c# console-application


【解决方案1】:

控制台窗口是一个非常基本的环境。虽然可以使用非托管 Win32 API 调用在最新版本的 Windows 中更改字体,但不支持通过托管 API。

不过,可以使用Console.ForegroundColor 属性设置字体颜色。

可以说,您不应该尝试对控制台窗口施加如此多的控制,因为它旨在成为一个简单的纯文本界面。如果您想完全控制所使用的字体,您应该考虑升级到 Windows 应用程序,因为这样您就可以轻松地创建一个文本窗口,并对所使用的字体和颜色做任何您想做的事情。

【讨论】:

  • 这只是部分正确。您不能更改单个字符的字体,但可以更改整个控制台。
  • 如果您看到控制台的属性窗口,则有 2 种字体可用。为什么.NET框架不能改变字体,不能改变颜色!
  • @OregonGhost:您能告诉我如何以编程方式更改整个控制台的字体吗?
  • @theraneman:因为颜色是通过在程序的输出中添加代码来改变的,而字体是通过改变cmd.exe的设置来改变的。两者有很大的不同。
  • Console.ForegroundColor 更改以下输出的颜色,而不是整个控制台窗口的颜色。这与从控制台属性页面设置默认控制台颜色不同。
【解决方案2】:

请不要在打算由其他用户使用的应用程序上执行此操作,除非他们请求此功能。 Consolas 是我系统上控制台的唯一字体:p

您可以尝试更改打开控制台(或可执行文件)的链接的属性,但如果我是对的,那是本地设置。如果它只是为了在您的系统上运行应用程序,这可能是您想要的。我不确定如何以编程方式更改这些内容。

从Vista 开始,有SetCurrentConsoleFontEx,如果你能让它与Console 类一起工作,它可能会做你想做的事。我有没有提到如果应用程序进入我的系统,我会恨你? ;)

【讨论】:

  • 大声笑。我不会让你使用我的小超级应用程序:)。在那种情况下,我什至不应该改变颜色。
  • 不是一般情况,但是颜色也可以用来改进格式(例如 PowerShell 所做的,例如,红色错误):)
猜你喜欢
  • 2014-01-05
  • 1970-01-01
  • 2011-04-05
  • 2010-11-20
  • 2010-12-08
  • 2013-05-20
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多