1

是否可以获取项目中存在表单的路径?

我有一堆表格,我将它们排列在树视图中以帮助用户导航。目前,我有一个属性应用于表单的类,它告诉它在下面显示表单的路径。

为了让它们在项目中更有条理,我还创建了一个类似的文件夹结构并将表单保存在其中。

只是想通过简单地使用表单保存在项目中的路径来设置树视图中的层次结构来消除重复,但是谷歌搜索并浏览表单和表单类型的所有属性似乎没有帮助.

4

1 回答 1

1

编辑 我找到了一种方法,但请注意,这很丑陋。

你可以看看这个 gem(在 .NET 4.5 中可用)CallerFilePath

Public Shared Function GetFilePath() As String
    Return GetFilePath2()
End Function

Private Shared Function GetFilePath2(
    <CallerFilePath> Optional sourcefilePath As String = Nothing)

    Return sourcefilePath

End Function

私有函数返回导致调用的文件的物理路径。这就是公共函数包装私有函数的原因。

将这些添加到每个表单中,您将能够获得表单/类的物理文件路径。

我将函数设为 Shared,这样您就不必为了获取它的路径而实例化表单。不幸的是,您无法创建包含此方法的基类并从中继承所有表单,因为这将返回基类的路径。所以你需要在你的所有表单中创建这些函数......它很丑,但它可以满足你的需求。

再想一想:您可以将私有函数作为扩展方法放在辅助类中,因此您只需将公共函数放入每个表单中。

旧答案

Visual Studio 中解决方案的文件夹结构对应用程序不可用。

所以解决这个问题的唯一方法是自己输入结构,编写一些逻辑(宏?)来提取文件夹结构或保持命名空间同步。

如果命名空间反映了相同的结构,您可以简单地使用该类型的 FullName:

 Dim t As Type = GetType(Form1)
 Console.WriteLine("The full name of the form is {0}.", t.FullName)

您可以使用String.Split将全名分解为命名空间的各个部分。

编辑 (我将其移至注释,因为它与 VB 无关,但可能对寻找类似功能的 C# 用户有用)

在 C# 中(不在 VB 中):当您在 Visual Studio 解决方案中创建文件夹结构时,您在这些文件夹中创建的类型将成为这些类型的命名空间。请注意,当您操作(重命名文件夹、移动文件)解决方案项时,不会更新命名空间。

于 2013-04-22T05:56:33.537 回答