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

时间:2018-03-05 05:18:28

标签: c# winforms fonts

我对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”,显然它会抛出一个文件而不是在方法中发现异常。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您没有打开您认为正在打开的目录。检查调试模式private class GetVersionCode extends AsyncTask<Void, String, String> { @Override protected String doInBackground(Void... voids) { String newVersion = null; try { newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + MainActivity.this.getPackageName() + "&hl=en") .timeout(30000) .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6") .referrer("http://www.google.com") .get() .select("div[itemprop=softwareVersion]") .first() .ownText(); return newVersion; } catch (Exception e) { return newVersion; } } @Override protected void onPostExecute(String onlineVersion) { super.onPostExecute(onlineVersion); if (onlineVersion != null && !onlineVersion.isEmpty()) { if (Float.valueOf(currentVersion) < Float.valueOf(onlineVersion)) { showAlertDialogForUpdate(currentVersion, onlineVersion); } } Log.e("update", "Current version " + currentVersion + "playstore version " + onlineVersion); } } 实际

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

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

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