【问题标题】:Can't resize controls with mouse in Visual Studio 2008 (C#, .NET Compact)无法在 Visual Studio 2008(C#、.NET Compact)中使用鼠标调整控件的大小
【发布时间】:2014-10-28 03:14:36
【问题描述】:

我正在 Visual Studio 2008 中为 Windows Mobile 6 开发一个 windows 窗体应用程序。每个窗体上都需要有一些通用控件,例如徽标(图片框)、标题(标签)和一个小描述(也称为标签)。我决定用这些控件创建一个 FormBase 并从该基础继承其他表单。

问题在于,由于某种原因,当我在继承的表单上放置一个 Button 或另一个控件时,我无法用鼠标调整它的大小。我可以按 Shift+Arrow 使用键盘快捷键调整任何内容的大小,但鼠标不起作用。

这对我和我团队中的其他开发人员都不是很方便。

有什么建议吗?

更新 1

基本形式:

public class FormBase : Form
{
    public FormBase()
    {
        InitializeComponent();
    }


    /// <summary>
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.IContainer components = null;

    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

    #region Windows Form Designer generated code

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
        System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormBase));
        this.pictureLogo = new System.Windows.Forms.PictureBox();
        this.labelTitle = new System.Windows.Forms.Label();
        this.panelSeparator = new System.Windows.Forms.Panel();
        this.SuspendLayout();
        // 
        // pictureLogo
        // 
        this.pictureLogo.Image = ((System.Drawing.Image)(resources.GetObject("pictureLogo.Image")));
        this.pictureLogo.Location = new System.Drawing.Point(0, 0);
        this.pictureLogo.Name = "pictureLogo";
        this.pictureLogo.Size = new System.Drawing.Size(48, 48);
        // 
        // labelTitle
        // 
        this.labelTitle.Font = new System.Drawing.Font("Tahoma", 10F, System.Drawing.FontStyle.Bold);
        this.labelTitle.ForeColor = System.Drawing.Color.Black;
        this.labelTitle.Location = new System.Drawing.Point(54, 2);
        this.labelTitle.Name = "labelTitle";
        this.labelTitle.Size = new System.Drawing.Size(183, 16);
        this.labelTitle.Text = "Title";
        // 
        // panelSeparator
        // 
        this.panelSeparator.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                    | System.Windows.Forms.AnchorStyles.Right)));
        this.panelSeparator.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(44)))), ((int)(((byte)(75)))));
        this.panelSeparator.Location = new System.Drawing.Point(3, 50);
        this.panelSeparator.Name = "panelSeparator";
        this.panelSeparator.Size = new System.Drawing.Size(234, 1);
        // 
        // FormBase
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
        this.AutoScroll = true;
        this.BackColor = System.Drawing.Color.White;
        this.ClientSize = new System.Drawing.Size(240, 320);
        this.ControlBox = false;
        this.Controls.Add(this.panelSeparator);
        this.Controls.Add(this.labelTitle);
        this.Controls.Add(this.pictureLogo);
        this.ForeColor = System.Drawing.Color.Black;
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        this.KeyPreview = true;
        this.Location = new System.Drawing.Point(0, 0);
        this.MinimizeBox = false;
        this.Name = "FormBase";
        this.Text = "FormBase";
        this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
        this.ResumeLayout(false);

    }

    #endregion

    private System.Windows.Forms.PictureBox pictureLogo;
    private System.Windows.Forms.Label labelTitle;
    private System.Windows.Forms.Panel panelSeparator;
}

继承的形式:

public class FrontDoorForm : FormBase
{
    public FrontDoorForm()
    {
        InitializeComponent();
    }

    private void buttonQuit_Click(object sender, EventArgs e)
    {
        Close();
    }

    /// <summary>
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.IContainer components = null;

    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

    #region Windows Form Designer generated code

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
        this.buttonQuit = new System.Windows.Forms.Button();
        this.SuspendLayout();
        // 
        // buttonQuit
        // 
        this.buttonQuit.Location = new System.Drawing.Point(3, 54);
        this.buttonQuit.Name = "buttonQuit";
        this.buttonQuit.Size = new System.Drawing.Size(115, 46);
        this.buttonQuit.TabIndex = 2;
        this.buttonQuit.Text = "Quit";
        this.buttonQuit.Click += new System.EventHandler(this.buttonQuit_Click);
        // 
        // FrontDoorForm
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
        this.BackColor = System.Drawing.Color.White;
        this.ClientSize = new System.Drawing.Size(240, 320);
        this.Controls.Add(this.buttonQuit);
        this.Font = new System.Drawing.Font("Tahoma", 10F, System.Drawing.FontStyle.Regular);
        this.ForeColor = System.Drawing.Color.Black;
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        this.Location = new System.Drawing.Point(0, 0);
        this.MinimizeBox = true;
        this.Name = "FrontDoorForm";
        this.Text = "FrontDoorForm";
        this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
        this.Controls.SetChildIndex(this.buttonQuit, 0);
        this.ResumeLayout(false);

    }

    #endregion

    private System.Windows.Forms.Button buttonQuit;
}

【问题讨论】:

  • 没有看到代码,我只能说这可能是因为你的派生形式导致 Initialze.. 没有被调用。
  • 试试这个SO的帖子,看看它是否有帮助stackoverflow.com/questions/15092025/…
  • @Ryios InitializeComponent 在基类和继承类构造函数中都被调用(在运行时),尽管没有 Initialize 方法。
  • 我复制。不完全确定是什么原因造成的,我们称它为错误。将基本窗体的 WindowState 更改回 Normal 以获得解决方法。您仍然可以在派生形式中将其最大化。
  • @HansPassant 哇!这确实有效!谢谢!

标签: c# winforms visual-studio-2008 compact-framework windows-mobile-6


【解决方案1】:

为了结束这个问题,我将引用comment的答案:

将基本窗体的 WindowState 改回 Normal 以作为解决方法。您仍然可以在派生形式中将其最大化。 Hans Passant

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    相关资源
    最近更新 更多