private static EnvDTE80.CodeClass2 GetCodeClass(EnvDTE.CodeElements codeElements, string className)
 {
     if (codeElements != null)
     {
         foreach (EnvDTE.CodeElement item in codeElements)
         {
             if (item.Kind == EnvDTE.vsCMElement.vsCMElementClass)
             {
                 EnvDTE80.CodeClass2 codeClass = item as EnvDTE80.CodeClass2;
                 if (codeClass != null && codeClass.Name == className)
                 {
                     return(codeClass);
                 }
             }
             else if (item.Kind == EnvDTE.vsCMElement.vsCMElementNamespace)
             {
                 EnvDTE80.CodeClass2 codeClass = GetCodeClass(((EnvDTE.CodeNamespace)item).Members, className);
                 if (codeClass != null && codeClass.Name == className)
                 {
                     return(codeClass);
                 }
             }
         }
     }
     return(null);
 }
 protected virtual void OnRemoveAttributes(object sender, EventArgs args)
 {
     EnvDTE._DTE         dte       = GetService(typeof(EnvDTE._DTE)) as EnvDTE._DTE;
     EnvDTE80.CodeClass2 codeClass = GetCodeClass(dte.ActiveDocument.ProjectItem.FileCodeModel.CodeElements, "MyForm");
     while (codeClass.Attributes.Count > 0)
     {
         ((EnvDTE80.CodeAttribute2)codeClass.Attributes.Item(1)).Delete();     // Attributes array starts from 1 not 0
     }
 }
 protected virtual void OnEditText(object sender, EventArgs args)
 {
     EnvDTE._DTE             dte           = GetService(typeof(EnvDTE._DTE)) as EnvDTE._DTE;
     EnvDTE80.CodeClass2     codeClass     = GetCodeClass(dte.ActiveDocument.ProjectItem.FileCodeModel.CodeElements, "MyForm");
     EnvDTE80.CodeAttribute2 codeAttribute = GetCodeAttribute(codeClass, "MyCustom");
     if (codeAttribute != null)
     {
         string newValue = Microsoft.VisualBasic.Interaction.InputBox("Current Text", "Edit MyCustomAttribute text", RemoveQuote(codeAttribute.Value), -1, -1);
         codeAttribute.Value = (!string.IsNullOrWhiteSpace(newValue) ? "\"" + newValue + "\"" : "");
     }
 }
 private static EnvDTE80.CodeAttribute2 GetCodeAttribute(EnvDTE80.CodeClass2 codeClass, string attributeName)
 {
     if (codeClass != null)
     {
         foreach (EnvDTE80.CodeAttribute2 attr in codeClass.Attributes)
         {
             if (attr.Name == attributeName)
             {
                 return(attr);
             }
         }
         return(codeClass.AddAttribute(attributeName, "") as EnvDTE80.CodeAttribute2);
     }
     return(null);
 }
 private static EnvDTE80.CodeClass2 GetCodeClass(EnvDTE.CodeElements codeElements, string name)
 {
     EnvDTE80.CodeClass2 codeClass = null;
     foreach (EnvDTE.CodeElement item in codeElements)
     {
         if (item.Kind == EnvDTE.vsCMElement.vsCMElementClass)
         {
             codeClass = item as EnvDTE80.CodeClass2;
         }
         else if (item.Kind == EnvDTE.vsCMElement.vsCMElementNamespace)
         {
             codeClass = GetCodeClass(((EnvDTE.CodeNamespace)item).Members, name);
         }
         if (codeClass != null && codeClass.Name == name)
         {
             break;
         }
     }
     return(codeClass);
 }