我有以下代码以编程方式打开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 的编辑器被带来了 到选项卡堆栈的顶部但光标没有给编辑器焦点。 将光标焦点移动到编辑器的任何技巧?
答案 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();