簡體   English   中英

Visual Studio-在設計視圖中顯示屬性窗口,但在代碼視圖中隱藏

[英]Visual Studio - Show properties window in design view but hide in code view

在設計模式下,每個人都使用“屬性”窗口。 當我們切換到代碼視圖時,我們不需要屬性窗口。

從設計視圖進入代碼視圖時,是否可以自動隱藏屬性窗口?

對於vs2015:(也vs2017)

  1. 菜單>工具>擴展和更新
  2. 安裝“ Visual Commander”。 (現在您有了名為“ VCmd”的新菜單)
  3. 菜單>“ VCmd”>擴展...(您將在右側看到擴展窗格)
  4. 在擴展窗格中按添加按鈕。 (將打開“新標簽”窗口。)
  5. 為擴展名。
  6. 選擇語言作為C#。
  7. 粘貼下面的代碼:
  8. 按保存。 然后按編譯。 然后按安裝

edit2:代碼在c#winforms + xamarin.android項目上有效。

using EnvDTE;
using EnvDTE80;
using System.Windows.Forms;
using System;

public class E: VisualCommanderExt.IExtension {
   private EnvDTE80.DTE2 DTE;
   private EnvDTE.WindowEvents windowEvents;

   public void SetSite(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) {
      this.DTE = DTE;
      DTE.Events.WindowEvents.WindowActivated += OnWindowActivated;
   }

   public void Close() {
      // DTE.Events.WindowEvents.WindowActivated -= OnWindowActivated;
   }

   private void OnWindowActivated(Window gotFocus, Window lostFocus) {
      //project_details();
      HidePropertiesWindowInCodeOrTextView(gotFocus);

    }

   public void HidePropertiesWindowInCodeOrTextView(Window gotFocus) {
      //System.Windows.MessageBox.Show(  gotFocus.Document.Name +"" );

      if (gotFocus.Document == null) return;
      var pwin = DTE.Windows.Item(Constants.vsWindowKindProperties);

      if (isAndroidProject()) 
      {
        pwin.AutoHides = !gotFocus.Caption.EndsWith(".axml");
      }else
      {
        pwin.AutoHides = !gotFocus.Caption.EndsWith(" [Design]");
      }

      //pwin.AutoHides = true;  // pwin.Activate();
   }

   public bool isAndroidProject() {
      if (DTE == null || DTE.ActiveWindow == null) return false;
      var cp = DTE.ActiveWindow.Project;
      var AndroidApp = System.IO.File.ReadAllText(cp.FullName).Contains("AndroidApplication");
      return AndroidApp;
   }

   // for debug , window,document names
   public void project_details() {
      try {
         if (DTE == null || DTE.ActiveWindow == null) return;

         var cp = DTE.ActiveWindow.Project;
         var ad = DTE.ActiveDocument; //Name Kind
         var av = DTE.ActiveWindow; // Caption Kind
         if (cp == null) return;

         var msgp = "aProj:" + (cp != null ? cp.FullName: "[no project for Window]") + "\r\n" 
         + "aDoc: " + ad.Name + ", " + ad.Kind + "\r\n" 
         + "aWin: " + av.Caption + ", " + av.Kind;

         MessageBox.Show(msgp, "ert4 -anbdapp" + isAndroidProject() );

      } catch(Exception ex) {
         MessageBox.Show(ex + "");
      }

   }




}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM