Visual Studio的隐藏功能赢得了设计师的青睐

时间:2010-11-04 09:00:26

标签: winforms visual-studio windows-forms-designer

视觉工作室最受喜爱和讨厌的人之一必须是表单设计师。

创建简单的表单/用户控件布局通常是轻而易举的。设置属性和添加事件很简单。

设置工具箱以使用您自己的控件可能会有点困难,让ToolBoxIcons显示可能会很痛苦。通过可视继承使用第三方组件可以抛出设计者。在设计上使用多重继承可能非常困难。

那么您最喜欢的“隐藏”和/或明显的视觉工作室设计师功能。

7 个答案:

答案 0 :(得分:23)

  • 按住CTRL并拖动控件以复制它。
  

注意:如果您的控件有,请小心   由...创建的事件处理程序   设计师,它会关联你的   新创建的控件与事件   处理程序以及旧控件。

  • 使用键盘快捷键F7从设计器视图转到代码视图,使用Shift-F7从代码视图转到设计器视图。我经常使用这个

  • “文档大纲”窗口对于重型设计人员使用至关重要。这允许您重新排序轮廓中的控件以将它们放在前面或发送回来。当您使用对接控件时,它尤其有用。您还可以将子控件移动到另一个父控件,或将其从容器控件中取出,或将父控件移动到容器中等...

View -> Other Windows -> Document Outline

  • “布局”工具栏非常适合用于打造简洁明了的用户界面。

View -> Toolbars -> Layout

答案 1 :(得分:8)

当WinForms项目设计器在窗体或用户控件上打开并且您具有嵌套的子控件时,可以通过按Esc键将焦点从当前聚焦的子控件移动到其父控件。再次按Esc键可将焦点移至其父级,依此类推,直至最终到达顶部。

答案 2 :(得分:4)

我尝试在表单初始化时编写自己的事件处理程序方法,而不是让设计人员处理它。我注意到设计师会不时丢失这些事件。通过自己编码,确保他们坚持下去。

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

答案 3 :(得分:4)

您可以将自己的对齐线添加到UserControls。

下面的类名为CenterSquare,并添加了一个名为CenterSquareSnapLines的Designer,它提供控件内的快照线列表。如果你有自己的控件渲染得更小,只有它们的边框,你现在可以添加自己的对齐线。

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
}

答案 4 :(得分:4)

您是否知道可以实际调试设计器?

您可以启动一个解决方案两次并使用“附加到进程”来调试运行设计器控件的devenv环境。这对于调试“奇怪的”设计器问题尤其有用,否则这些问题几乎不会提供任何信息。

我用这个来确定一个设计师的问题,这个问题已经开始,并且无法触发未处理的异常并打破设计师。我在desigerview看到的只是一些视觉工作室内部帮助程序类崩溃。

答案 5 :(得分:2)

设计器将显示用户控件上的所有属性,并填充数据类型的默认值。 使用Hidden作为值添加DesignerSerializationVisibility属性不会使用任何默认值填充此属性。

<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>

这是将设计师代码的数量保持在最低限度的好方法。另一个选项是DefaultValue。

<DefaultValue(somevalue)>

这将设置设计者使用给定值作为选择的默认值。

如果您不使用这些属性,设计人员将覆盖后备字段值和初始化值。

另一个很难找到的: 菜单 - 查看 - 标签顺序

您可以点击字段来更改标签顺序。此选项仅在设计器处于活动状态时可见。

答案 6 :(得分:1)

破碎的设计师:

有时,visual studio不会显示切换到Designer / Code选项。我没有找到导致这种情况的原因,但在使用devexpress时混合使用vb.net和c#项目似乎是一个原因。

只要visual studio运行,它就不会突然看到我的表单/用户控件可以设计。关闭视觉工作室并更改项目文件通常会有所帮助。

最初项目文件包含

<Compile Include="cboTargetGroupFlights.cs">

将其更改为并重新打开项目会导致visual studio重新检查所有表单/用户控件,并再次向设计人员显示。

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

您是否知道在解决方案视图中双击某些内容后,您可以将代码视图设置为默认值。右键单击您的文件,然后选择打开方式...并使用设置为默认值按钮。