如何检查 Visual Studio 中的文本编辑器视图是否被修改(未保存)?

How to check if text editor view in Visual Studio is modified (unsaved)?

为了触发自动完成,我需要知道打开的文本视图中的哪个文本视图确实包含修改过的文本(即尚未保存到磁盘)。如何检查是否具有 IVsTextView 和 ITextView 实例?

如果文本视图基于文档,您可以使用IVsRunningDocumentTable3.IsDocumentDirty方法。

我找到了以下解决方案:

IVsTextLines buffer;
if (vsTextView.GetBuffer(out buffer) != VSConstants.S_OK)
{
    return false;
}

uint flags;
buffer.GetStateFlags(out flags);
bool isDirty = (flags & (uint)BUFFERSTATEFLAGS.BSF_MODIFIED) != 0;