Well here is just more of the same, Stephen posted about querying an item to see whether it's "dirty" or not. Here is the .NET equivalent. I didn't actually test these this time so your feedback is welcome.
Visual Basic
Public Function IsItemDirty(ByVal itm As Object) As Boolean Dim typeDispatch As Type = itm.GetType() Dim dispidIsDirtyMemberName As String = String.Format("[DispID={0}]", _ &HF024) Dim retVal As Boolean = False Try retVal = typeDispatch.InvokeMember(dispidIsDirtyMemberName, _ System.Reflection.BindingFlags.InvokeMethod _ Or System.Reflection.BindingFlags.GetProperty, _ Nothing, _ itm, _ Nothing) Catch comEx As System.Runtime.InteropServices.COMException End Try End Sub
C#
public bool IsItemDirty(object itm) { Type typeDispatch = itm.GetType(); string dispidIsItemDirtyMemberName = String.Format("[DispID={0}]", 0xF024); bool retVal = false; try { retVal = (bool)typeDispatch.InvokeMember(dispidIsItemDirtyMemberName, System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.GetProperty, null, itm, null); } catch(System.Runtime.InteropServices.COMException comEx) { } return retVal; }