在Visual Studio Designer中找不到自定义字体的C#文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Visual Studio Designer中找不到自定义字体的C#文件相关的知识,希望对你有一定的参考价值。

我对C#比较陌生,所以我的WinForms项目中包含一个包含自定义字体的文件夹。该字体在启动应用程序时非常正常,但在Visual Studio本身的实际设计器中,无法加载自定义控件(因为我在设计器中使用的路径不同)。这是我用来从资源文件夹中找到字体的代码:

string leadDirectory = System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, "Resources" + Path.DirectorySeparatorChar + "Roboto-Regular.ttf");

设计器中使用的目录是“C: Program Files(x86) Microsoft Visual Studio 2017 Community Common7 IDE Resources Roboto-Regular.ttf”,显然它会抛出一个未找到的文件异常方法。

任何帮助,将不胜感激!

答案

您没有打开您认为正在打开的目录。检查调试模式System.Windows.Forms.Application.StartupPath实际上是什么。

要完全理解这里出了什么问题,您应该了解如何从命令提示符运行程序。您有命令提示符,在该提示符下,您会看到“当前路径”设置为某个目录。通常,这表示您希望在该特定目录中执行操作,但您可以通过提供启动的完整路径来启动系统中任何位置的程序。但是,这不会使您的命令提示符切换到该已启动的应用程序的路径。尽管运行位于其他位置的程序,您仍将保留在同一文件夹中。此文件夹是您正在使用的“启动路径”。你可以想象,它与你试图寻找那个Resources文件夹的地方毫无关系。

尽管已经演变为图形用户界面,但程序启动的方式仍然与DOS中的方式相同,因此这种区别仍然存在。

在Windows窗体中,您可以使用Application.ExecutablePath获取exe文件的完整路径和文件名,因此如果您使用Path.GetDirectoryName(),则可以获得所需的基本路径。如果您的程序不是WinForms应用程序,您可以使用Assembly.GetExecutingAssembly().Location命名空间中的System.Reflection

以上是关于在Visual Studio Designer中找不到自定义字体的C#文件的主要内容,如果未能解决你的问题,请参考以下文章

为什么在Visual Studio编码的UI测试中编辑UIMap.designer.cs文件不好?

Visual Studio Designer 可以显示继承泛型类型的类吗?

在 Visual Studio Ultimate 中找不到打开网站

C++ 调试在 Visual Studio 中找不到“=”运算符

包括在 Visual Studio 2015 中找不到库

为啥在 Visual Studio 2019 (XAMARIN) 中找不到 Android 库