2010-11-04 59 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键将焦点移至其父项等,直至您最终到达顶部。

相关问题