visual studio extension: 怎样监控属性变化
2013-03-20 16:35
176 查看
HierarchyEvents hierarchyEvent = new HierarchyEvents(pHierarchy);
uint cookie;
pHierarchy.AdviseHierarchyEvents(hierarchyEvent, out cookie);
public class HierarchyEvents : Microsoft.VisualStudio.Shell.Interop.IVsHierarchyEvents
{
public IVsHierarchy IVsHierarchy { get; set; }
public HierarchyEvents()
{
}
public HierarchyEvents(IVsHierarchy hierarchy)
{
this.IVsHierarchy = hierarchy;
}
#region IVsHierarchyEvents Members
public int OnInvalidateIcon(IntPtr hicon)
{
return VSConstants.S_OK;
}
public int OnInvalidateItems(uint itemidParent)
{
return VSConstants.S_OK;
}
public int OnItemAdded(uint itemidParent, uint itemidSiblingPrev, uint itemidAdded)
{
return VSConstants.S_OK;
}
public int OnItemDeleted(uint itemid)
{
return VSConstants.S_OK;
}
public int OnItemsAppended(uint itemidParent)
{
return VSConstants.S_OK;
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA2204:Literals should be spelled correctly", MessageId = "OnPropertyChanged"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals", MessageId = "nop"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals", MessageId = "ex"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.String)"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1300:SpecifyMessageBoxOptions")]
public int OnPropertyChanged(uint itemid, int propid, uint flags)
{
//MessageBox.Show("changed"+itemid+ " "+propid+" "+flags);
try
{
object ppObject;
if (IVsHierarchy.GetProperty(itemid, (int)__VSHPROPID.VSHPROPID_ExtObject, out ppObject) == VSConstants.S_OK)
{
if (ppObject is ProjectItem)
{
MessageBox.Show(("Hierarchy->OnPropertyChanged: " + ((ProjectItem)ppObject).Name));
}
}
if (IVsHierarchy.GetProperty(itemid, (int)__VSHPROPID.VSHPROPID_Name, out ppObject) == VSConstants.S_OK)
{
int nop = 0;
}
}
catch (Exception ex)
{
int nop = 0;
}
return VSConstants.S_OK;
}
#endregion
}
uint cookie;
pHierarchy.AdviseHierarchyEvents(hierarchyEvent, out cookie);
public class HierarchyEvents : Microsoft.VisualStudio.Shell.Interop.IVsHierarchyEvents
{
public IVsHierarchy IVsHierarchy { get; set; }
public HierarchyEvents()
{
}
public HierarchyEvents(IVsHierarchy hierarchy)
{
this.IVsHierarchy = hierarchy;
}
#region IVsHierarchyEvents Members
public int OnInvalidateIcon(IntPtr hicon)
{
return VSConstants.S_OK;
}
public int OnInvalidateItems(uint itemidParent)
{
return VSConstants.S_OK;
}
public int OnItemAdded(uint itemidParent, uint itemidSiblingPrev, uint itemidAdded)
{
return VSConstants.S_OK;
}
public int OnItemDeleted(uint itemid)
{
return VSConstants.S_OK;
}
public int OnItemsAppended(uint itemidParent)
{
return VSConstants.S_OK;
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA2204:Literals should be spelled correctly", MessageId = "OnPropertyChanged"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals", MessageId = "nop"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals", MessageId = "ex"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.String)"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1300:SpecifyMessageBoxOptions")]
public int OnPropertyChanged(uint itemid, int propid, uint flags)
{
//MessageBox.Show("changed"+itemid+ " "+propid+" "+flags);
try
{
object ppObject;
if (IVsHierarchy.GetProperty(itemid, (int)__VSHPROPID.VSHPROPID_ExtObject, out ppObject) == VSConstants.S_OK)
{
if (ppObject is ProjectItem)
{
MessageBox.Show(("Hierarchy->OnPropertyChanged: " + ((ProjectItem)ppObject).Name));
}
}
if (IVsHierarchy.GetProperty(itemid, (int)__VSHPROPID.VSHPROPID_Name, out ppObject) == VSConstants.S_OK)
{
int nop = 0;
}
}
catch (Exception ex)
{
int nop = 0;
}
return VSConstants.S_OK;
}
#endregion
}
相关文章推荐
- visual studio extension: 怎样监控文件的变化
- visual studio extension: 怎样监控解决方案的事件
- vs2012 怎样解决 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包的问题
- Microsoft Visual Studio 2005快捷图标怎样找回
- Microsoft Visual Studio 工程属性表props/vsprops创建与使用
- 【OC学习-32】KVO-用一个对象监控另一个对象的属性,如有变化,则输出需要的结果
- MSSQL Extension For Visual Studio Code
- Visual Studio Project Properties Manager(属性管理器)
- 怎样顺利安装Microsoft Visual Studio 2008(针对Web组件创建失败)
- POWERSHELL脚本编写利器:PowerGUI Visual Studio Extension
- 怎样在 Ubuntu 上安装 Visual Studio Code
- 怎样在visual studio.NET 让C,C++,C#代码自动排齐
- PInvoke.net Visual Studio Extension
- Microsoft Visual Studio 2010开发环境的变化和精彩文章推荐
- 汉字的一些关注点,Microsoft Visual Studio International Pack 1.0 SR1 简体繁体转化,汉字属性,数值到大写的转化
- .NET Reflector Visual Studio Extension
- Visual Studio has encountered an exception. This may be caused by an extension.
- 7-visual-studio-extension.html
- visual studio .net 2005从beta 2到RTM的变化
- 使用vs package开发visual studio extension