在Visual Studio Properties属性网格中访问项目文件结构?

时间:2009-06-24 20:12:23

标签: visual-studio components projects-and-solutions designer propertygrid

我正在制作一个将在VS拖放设计器中使用的Component。此组件的其中一个属性需要是项目中文件的包URI。

我想让事情变得简单一点,从属性编辑器中,PropertyGrid用于我的类型属性,检查解决方案,构造Uris并将它们呈现给用户进行选择。

这可能吗?而且,如果是这样的话,我可以得到一些关于如何解决这个问题的指导和起点吗?

2 个答案:

答案 0 :(得分:1)

这是仅适用于WPF项目的组件吗?那么你可能会很幸运。这是一个写作。 http://www.wiredprairie.us/journal/2007/06/pack_syntax_in_wpf.html。或者此MSDN示例可能有助于http://msdn.microsoft.com/en-us/library/aa972152(VS.85).aspx

答案 1 :(得分:1)

我认为这有几个方面。

1)您可以为属性创建自己的类型编辑器,以决定如何使用属性网格向用户显示属性值。

为此,您需要创建一个类型编辑器,继承自UITypeEditor,就像这样。

public class UriListUIEditor : UITypeEditor
{
       //Override a couple of methods
}

看看这个代码项目文章,看一个简单的例子。 http://www.codeproject.com/KB/edit/flagenumeditor.aspx

现在,提供属性的EditorType属性,例如

   [Editor(typeof(Utils. UriListUIEditor ), 
             typeof(System.Drawing.Design.UITypeEditor))]
    public string Uri 
             { get;set;
             }

2)要在项目中迭代解决方案,请获取当前的DTE实例

 var dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal. GetActiveObject("VisualStudio.DTE.8.0"); 

并遍历所有项目以构建列表或URI或任何内容。理想情况下,您可以在上面的UriListUIEditor的EditValue方法中执行此操作。

  foreach (var project in dte.Solution.Projects)
        {

        }

希望这有帮助