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

问题描述 投票:1回答:1

我对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”,显然它会抛出一个未找到的文件异常方法。

任何帮助,将不胜感激!

c# winforms fonts
1个回答
1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.