C# 如何从IDifferenceViewer';左视图是什么?
我希望能够编辑来自IDifferenceViewer的左侧ITextView(C# 如何从IDifferenceViewer';左视图是什么?,c#,visual-studio,visual-studio-2017,visual-studio-extensions,visual-studio-2019,C#,Visual Studio,Visual Studio 2017,Visual Studio Extensions,Visual Studio 2019,我希望能够编辑来自IDifferenceViewer的左侧ITextView(LeftView属性)的ITextBuffer,但一旦构建完成,调用IsReadOnly()时,LeftView即为只读。如何允许LeftView的ITextBuffer可编辑 var diffService = (IVsDifferenceService)_serviceProvider.GetService(typeof(SVsDifferenceService)); //roles don't seem to
LeftView
属性)的ITextBuffer,但一旦构建完成,调用IsReadOnly()
时,LeftView即为只读。如何允许LeftView的ITextBuffer可编辑
var diffService = (IVsDifferenceService)_serviceProvider.GetService(typeof(SVsDifferenceService));
//roles don't seem to do anything...
string roles = null; //$"{PredefinedTextViewRoles.Editable},{PredefinedTextViewRoles.PrimaryDocument},{PredefinedTextViewRoles.Document},{PredefinedTextViewRoles.Interactive},DIFF";
var frame = diffService.OpenComparisonWindow2(filePath1, filePath2,
$"Your version vs Other version",
filePath1 + Environment.NewLine + filePath2,
filePath1,
filePath2, null, null, 0);
var diffViewer = GetDiffViewer(frame);
diffViewer.LeftView.TextBuffer.IsReadOnly(0, false); // true!
您所指的LeftTextView是指。在IdifferenceViewer界面中,似乎只存在LeftText。@LanceLi MSFT我更新了帖子,使其更加清晰——属性名称是
LeftView
Hi brianc,我正试图让一位更具经验的人参与进来,帮助研究它。请耐心等待答复。
static IDifferenceViewer GetDiffViewer(IVsWindowFrame frame) {
ThreadHelper.ThrowIfNotOnUIThread();
return ErrorHandler.Succeeded(frame.GetProperty((int)__VSFPROPID.VSFPROPID_DocView, out object docView))
? (docView as IVsDifferenceCodeWindow)?.DifferenceViewer : null;
}