让编辑专注于visual studio addin代码

时间:2012-11-14 11:59:50

标签: visual-studio-2012 visual-studio-extensions

我有以下代码以编程方式打开Visual Studio ProjectItem节点作为代码编辑器视图。

void Commit(object sender, KeyPressEventArgs args)
{
    if (args.KeyChar == (char)Keys.Return)
    {
        Close();
        var selected = _FilteredList.FirstOrDefault();
        if (selected != ""){
            var item = _Items.Where(x => x.Name == selected).First();
            if (item!=null)
            {
                Window win = item.Open(Constants.vsViewKindCode);
                win.Visible = true;
                win.SetFocus();
            }
        }
    }
}

问题是属于窗口 win 的编辑器被带来了 到选项卡堆栈的顶部但光标没有给编辑器焦点。 将光标焦点移动到编辑器的任何技巧?

1 个答案:

答案 0 :(得分:1)

这对我有用:

    Project activeProject = _applicationObject.Solution.Projects.Item(1);

    ProjectItem a = activeProject.ProjectItems.Cast<ProjectItem>().FirstOrDefault(item => item.Name.EndsWith(".cs"));

    Window win = a.Open();
    win.Activate();

    _applicationObject.ExecuteCommand("Edit.GoTo", String.Format("{0}", 2));
    _applicationObject.ExecuteCommand("Edit.CharRight");

您可以使用“Edit.GoTo”命令将光标移动到所需的行。

如果您需要编辑代码,那么EditPoint可能是更好的选择:

      TextSelection ts;
      ts = (TextSelection)_applicationObject.ActiveDocument.Selection;
      EditPoint ep = (ts.ActivePoint).CreateEditPoint();

      ep.StartOfDocument();