我对 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
实际上is.
要完全理解这里出了什么问题,您应该了解从命令提示符运行程序的工作原理。您有命令提示符,在该提示符下,您会看到“当前路径”被设置为某个目录。通常,这表明您想要在该特定目录中执行操作,但您可以通过提供完整的启动路径来启动系统上任何位置的程序。然而,这将not让您的命令提示符切换到该启动的应用程序的路径。尽管运行位于其他位置的程序,但您仍将保留在同一文件夹中。该文件夹是您正在使用的“启动路径”。正如你可以想象的那样,它与你试图寻找的地方完全没有关系Resources
folder.
尽管已经发展为图形用户界面,但程序启动的方式仍然与 DOS 中相同,因此这种区别仍然存在。
在 Windows 窗体中,您可以使用Application.ExecutablePath
获取 exe 文件的完整路径和文件名,因此如果您使用Path.GetDirectoryName()
就这样,你就有了你想要的基本路径。如果你的程序会not是一个 WinForms 应用程序,您可以使用Assembly.GetExecutingAssembly().Location
, 来自System.Reflection
命名空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)