2010-11-04 44 views
17

視覺工作室最受歡迎和討厭的特徵之一必須是表單設計師。Visual Studio winforms設計師的隱藏特徵

創建簡單的表單/用戶控件佈局通常很簡單。設置屬性和添加事件很容易。

設置工具箱以使用自己的控件可能會更困難,讓ToolBoxIcons顯示可能會很痛苦。通過可視化繼承來使用第三方組件可能會導致設計人員失敗。在指定設計中使用多重繼承可能非常困難。

那麼,你最喜歡的'隱藏'和或明顯的視覺工作室設計師功能。

+0

無法對ToolBoxBitmap達成更多共識 - 即使在嘗試了十幾種不同的「解決方案」之後,我從來沒有得到過這樣的工作。開始認爲這是一個神話... – 2010-11-04 16:26:05

+0

關於該toolboxbitmap。只有在正確設置並且將DLL引用設置爲單獨的DLL並且不在同一個解決方案中時,才能正常工作。 – CodingBarfield 2010-11-05 09:33:50

回答

22
  • 按住CTRL並拖動控制複製它。

注意:要小心,如果你的控制有 ,是由 設計師創建一個事件處理程序,它會在您 新創建的控制與事件 處理器以及舊的控制關聯。

  • 使用鍵盤快捷鍵F7從設計視圖到代碼視圖去,和Shift-F7從代碼視圖設計器視圖中去。我經常使用它

  • 「文檔大綱」窗口對重型設計師的使用非常重要。這使您可以對輪廓中的控件進行重新排序,以將它們置於前面或發回。當您使用對接控件時,它特別有用。你也可以將一個子控件移動到另一個父控件上,或者將其從一個容器控件中移出,或者將一個父控件移動到一個容器中等等。

View -> Other Windows -> Document Outline

  • 「佈局」工具欄是偉大的襯裏東西做一個乾淨美觀的用戶界面。

View -> Toolbars -> Layout

+5

Shift F7在代碼視圖和設計器視圖之間切換。 – CodingBarfield 2010-11-17 12:42:14

+1

文檔大綱正是我正在尋找的,並且無法在Googlewebz上的其他任何地方找到。 – orfdorf 2015-05-02 00:32:37

2

用戶控件的所有屬性都將由設計者顯示,並填充數據類型的默認值。 將Hidden的DesignerSerializationVisibility屬性添加爲值不會使用任何默認值填充此屬性。

<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> 

這是將設計器代碼的音量降到最低的好方法。另一個選項是DefaultValue。

<DefaultValue(somevalue)> 

這將設置設計者使用給定值作爲選擇的默認值。

如果您不使用這些屬性,設計人員將覆蓋支持字段值和初始值設定值。

另外一個,可以是很難找到: 菜單 - 視圖 - Tab順序

你可以通過點擊你的域更改選項卡順序。該選項僅在設計器處於活動狀態時可見。

+0

另一個提示是設置 CodingBarfield 2011-11-11 09:15:59

4

我嘗試在表單初始化時嘗試編寫自己的事件處理程序方法,而不是讓設計師處理它。我注意到設計師會不時地失去這些活動。通過編碼你自己,確保他們堅持。

myButton.Click += new System.EventHandler(this.myButtonClick) 
+1

可以縮短新的.NET版本:myButton.Click + = this。myButtonClick – pettys 2012-10-16 16:06:23

1

破碎設計師

有時Visual Studio將不會顯示開關設計/編譯選項。我還沒有確定究竟是什麼原因導致了這種情況,但使用devexpress混合vb.net和c#項目似乎是一個原因。

只要visual studio運行它就不會突然看到我的forms/usercontrols可以被設計。關閉visual studio並更改項目文件通常會有所幫助。

最初的項目文件包含

<Compile Include="cboTargetGroupFlights.cs"> 

改變這種以再重新打開該項目造成的Visual Studio來重新檢查所有形式/用戶控件並沒有再次展現設計師。

<Compile Include="cboTargetGroupFlights.cs"> 
    <SubType>Component</SubType> 
</Compile> 

您是否知道在雙擊解決方案視圖中的某些內容後,您可以將代碼視圖設置爲默認值。右鍵單擊您的文件,然後選擇打開方式...並使用設爲默認值按鈕。

4

您可以將自己的對接線添加到UserControls。

此處下面的類被稱爲CenterSquare,並添加了一個名爲CenterSquareSnapLines的設計器,該設計器提供控件內部的捕捉線列表。如果你有自己的控件渲染得更小,然後只是他們的邊框,你現在可以添加自己的線條。

public class CenterSquareSnapLines : ControlDesigner 
{ 

    public override System.Collections.IList SnapLines 
    { 
     get 
     { 
      ArrayList snapLines = base.SnapLines as ArrayList; 
      CenterSquare c = this.Control as CenterSquare; 
      if (c != null) 
      { 
       snapLines.Add(new SnapLine(SnapLineType.Left, c.BorderDistance)); 
       snapLines.Add(new SnapLine(SnapLineType.Right, c.Height - c.BorderDistance)); 
       snapLines.Add(new SnapLine(SnapLineType.Top, c.BorderDistance)); 
       snapLines.Add(new SnapLine(SnapLineType.Bottom, c.Width - c.BorderDistance)); 
       snapLines.Add(new SnapLine(SnapLineType.Top, 5)); 
      } 
      else 
      { 
       //Debug message here! 
      } 
      return snapLines; 
     } 
    } 

} 

[Designer(typeof(CenterSquareSnapLines))] 
public partial class CenterSquare : UserControl 
{ 
//implementation goes here 
} 
+0

另請參見:http://stackoverflow.com/a/945486/27472 – 2011-12-15 15:38:02

4

您是否知道您實際上可以調試設計器?

您可以啓動一個解決方案兩次並使用「附加到進程」調試運行您的設計器控件的devenv環境。這對調試「奇怪的」設計器問題尤其有用,否則它會給出非常少的信息。

我用這個來確定一個設計器問題,以便開始一些遠程處理,並且不會觸發未處理的異常並破壞設計器。我在desigerview上看到的一些視覺工作室內部幫助類都崩潰了。

7

當WinForms項目設計器在窗體或用戶控件上打開並且具有嵌套的子控件時,可以通過按下Escape鍵將焦點從當前聚焦的子控件移到其父控件。再次按下Escape鍵將焦點移至其父項等,直至您最終到達頂部。