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

C# 如何检查Visual Studio中的文本编辑器视图是否已修改(未保存)?,c#,visual-studio,mef,C#,Visual Studio,Mef,为了触发自动完成,我需要知道打开的文本视图中有哪些文本视图包含修改过的文本(即,尚未保存到磁盘)。我如何检查是否有IVsTextView和ITextView实例 如果文本视图基于文档,则可以使用方法。如果文本视图基于文档,则可以使用方法。我找到了以下解决方案: IVsTextLines buffer; if (vsTextView.GetBuffer(out buffer) != VSConstants.S_OK) { return false; } uint flags; buffe

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

如果文本视图基于文档,则可以使用方法。

如果文本视图基于文档,则可以使用方法。

我找到了以下解决方案:

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;

我找到了以下解决方案:

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;

你的代码是什么样子的?您是否使用任何文本编辑器框架,或者它是您的代码?我使用MEF(微软为Visual Studio编写扩展的官方框架)。因此,请向我们展示您的代码,以便我们可以帮助您。在没有看到您的代码的情况下,我可以告诉您,您可以使用
Publish–subscribe模式使用模块(插件)之间的通信。诸如
Prism
Caliburn.Micro
之类的框架提供了此功能,但是自己编写它很容易。那么您的代码是什么样的呢?您是否使用任何文本编辑器框架,或者它是您的代码?我使用MEF(微软为Visual Studio编写扩展的官方框架)。因此,请向我们展示您的代码,以便我们可以帮助您。在没有看到您的代码的情况下,我可以告诉您,您可以使用
Publish–subscribe模式使用模块(插件)之间的通信。诸如
Prism
Caliburn.Micro
之类的框架提供了这一功能,但是自己编写很容易。