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

在Visual Studio Designer中找不到自定义字体的C#文件,c#,winforms,fonts,C#,Winforms,Fonts,我对C#比较陌生,所以我的WinForms项目中包含了一个包含自定义字体的文件夹。在应用程序启动时,字体工作完全正常,但在VisualStudio上的实际设计器中,无法加载自定义控件(因为我在设计器中使用的路径不同)。以下是我用于从resources文件夹中查找字体的代码: string leadDirectory = System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, "Resources" + Path.D

我对C#比较陌生,所以我的WinForms项目中包含了一个包含自定义字体的文件夹。在应用程序启动时,字体工作完全正常,但在VisualStudio上的实际设计器中,无法加载自定义控件(因为我在设计器中使用的路径不同)。以下是我用于从resources文件夹中查找字体的代码:

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实际上是什么

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

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


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

在调试中运行,检查内容
leadDirectory
和字体的实际路径。