2012-11-14 64 views
2

我有以下代碼以編程方式打開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(); 
      } 
     } 
    } 
} 

的問題是屬於窗口編輯贏得被帶到 到標籤堆棧的頂部,但光標不給編輯焦點。 將光標焦點移至編輯器的任何技巧?

回答

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();