代码之家  ›  专栏  ›  技术社区  ›  CodingBarfield

Visual Studio winforms设计器的隐藏功能[已关闭]

  •  18
  • CodingBarfield  · 技术社区  · 14 年前

    visual studio最受喜爱和憎恨的特性之一必须是表单设计器。

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

    7 回复  |  直到 11 年前
        1
  •  24
  •   Hannele    12 年前
    • 压制 CTRL 然后拖动控件复制它。

    由创建的事件处理程序 设计师,它会把你的 新创建的带有事件的控件

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

    • “文档大纲”窗口对于设计者的大量使用是必不可少的。这允许您对大纲中的控件重新排序,以便将它们置于前面或发送到后面。当您使用停靠控件时,它特别有用。也可以将子控件移到其他父控件,或将其从容器控件中取出,或将父控件移到容器中,等等。。。

    View -> Other Windows -> Document Outline

    • “布局”工具栏非常适合将事情排成一行,以形成一个外观整洁的用户界面。

    View -> Toolbars -> Layout

        2
  •  8
  •   Elan    13 年前

        3
  •  5
  •   CodingBarfield    14 年前

    你知道你真的可以调试设计师吗?

    我用这个来指出某个远程处理中的一个设计器问题,该远程处理已经启动,但无法触发未处理的异常并中断设计器。我在desigerview上看到的只是一些visual studio内部帮助程序类崩溃。

        4
  •  5
  •   Hannele    12 年前

    您可以将自己的对齐线添加到用户控件。

    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
    }
    
        5
  •  4
  •   dretzlaff17    14 年前

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

    myButton.Click += new System.EventHandler(this.myButtonClick)
    
        6
  •  2
  •   CodingBarfield    14 年前

    用户控件上的所有属性都将由设计器显示,并用数据类型的默认值填充。

    <DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>
    

    这是将设计器代码的数量保持在最小值的一个好方法。另一个选项是DefaultValue。

    <DefaultValue(somevalue)>
    

    如果不使用这些属性,设计器将重写后台字段值和初始值设定项值。

    另一个很难找到的: 菜单-视图-选项卡顺序

        7
  •  1
  •   CodingBarfield    14 年前

    破碎的设计师:

    有时visual studio不会显示切换到设计器/代码选项。我还没有确定到底是什么导致了这一点,但是在使用DeExver时混合VB.NET和C语言项目似乎是一个原因。

    最初包含的项目文件

    <Compile Include="cboTargetGroupFlights.cs">
    

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

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

    推荐文章