锚定控件自行运行

时间:2009-07-10 23:18:02

标签: c# winforms visual-studio-2008 layout

我有一个控件,我在它上面构建了几个输入控件,一些文本框,一个组合框和一个列表框等等。一个文本框,一个组合框,一个列表框和几个命令按钮被锚定,以便它们与表单一起调整大小。组合框锚定在左侧,顶部和右侧,列表框锚定在所有四个边上,按钮锚定在底部和右侧。他们都正确调整并保持自己的位置。问题是我试图锚定的文本框,就像组合框一样。当它固定在右侧时,它在运行时从表单的右侧运行。然而,对于固定在右侧的表单上的任何现有控件,我没有这个问题,它们都保持原样,就像它们应该的那样。

我尝试添加一个额外的文本框和组合框并将它们固定在右侧,但它们也会从表单的右边缘移开。为什么现有的控件除了一个之外,就像它们应该的那样工作,但是一个控件和新控件变得太宽了?

作为参考,我操纵了设计器生成的代码来重新排列语句的顺序,以便在设置位置和宽度之后发生锚定,但这没有用。以下是行为不端文本框的代码:

        // 
        // txtComments
        // 
        this.txtComments.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                    | System.Windows.Forms.AnchorStyles.Right)));
        this.txtComments.Location = new System.Drawing.Point(430, 6);
        this.txtComments.Name = "txtComments";
        this.txtComments.Size = new System.Drawing.Size(166, 20);
        this.txtComments.TabIndex = 25;

正确行为组合框的代码:

        // 
        // cbMacroList
        // 
        this.cbMacroList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                    | System.Windows.Forms.AnchorStyles.Right)));
        this.cbMacroList.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
        this.cbMacroList.FormattingEnabled = true;
        this.cbMacroList.Location = new System.Drawing.Point(128, 78);
        this.cbMacroList.Name = "cbMacroList";
        this.cbMacroList.Size = new System.Drawing.Size(468, 21);
        this.cbMacroList.TabIndex = 30;
        this.cbMacroList.SelectedIndexChanged += new System.EventHandler(this.cbMacroList_SelectedIndexChanged);

最后一个背景是当我确定我需要重用表单以另一种形式提供的功能时,所有这些控件都来自Form。我选择了所有控件,剪切它们然后粘贴到新的UserControl上。在迁移到UserControl之前,它们都运行良好。这在迁移后开始显现。

2 个答案:

答案 0 :(得分:1)

你确定你的行为控制不是你不期望的东西,比如小组或其他东西吗?

答案 1 :(得分:0)

这很奇怪,但只是从表单中删除控件并再次将其放下已解决了问题。我在我使用控件的表单上重新检查了设计器生成的代码,我发现它在创建或添加到表单方面完全没有区别。然而,它是固定的。我想知道为什么它会这样表现......?