获取项目中表单的保存路径

时间:2013-04-22 04:09:06

标签: .net vb.net

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

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

为了让它们在项目中保持一定的组织,我还创建了一个类似的文件夹结构并将表单保存在那些文件夹中。

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

1 个答案:

答案 0 :(得分: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

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

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

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

第二个想法:您可以将私有函数作为扩展方法放在辅助类中,这样您只需要将public函数放在每个表单中。

旧答案

应用程序无法使用Visual Studio中的解决方案的文件夹结构。

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

IF 命名空间反映了相同的结构,您只需使用该类型的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解决方案中创建文件夹结构时,在这些文件夹中创建的类型将成为这些类型的名称空间。请注意,在操作(重命名文件夹,移动文件)解决方案项时,不会更新名称空间。