表单上的所有控件都是不可见的

时间:2011-04-02 06:45:41

标签: c# .net winforms

我遇到了一个奇怪的问题。只给出了这个代码(我已经减少了基本要素),表单将会出现但是它上面的所有控件都是不可见的,即使它们各自的Visible属性都是真的:

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new WaveformWindow());
    }
}

// ...

public partial class WaveformWindow : Form
{
    public WaveformWindow()
    {
        InitializeComponent();
    }
}

// ...

partial class WaveformWindow
{
    /// <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.label1 = new System.Windows.Forms.Label();
        this.SuspendLayout();
        // 
        // label1
        // 
        this.label1.AutoSize = true;
        this.label1.Location = new System.Drawing.Point(27, 27);
        this.label1.Name = "label1";
        this.label1.Size = new System.Drawing.Size(35, 13);
        this.label1.TabIndex = 4;
        this.label1.Text = "label1";
        // 
        // WaveformWindow
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(398, 373);
        this.Name = "WaveformWindow";
        this.ShowInTaskbar = false;
        this.Text = "WaveformWindow";
        this.ResumeLayout(false);

    }

    #endregion

    private System.Windows.Forms.Label label1;
}

比较非剥离程序的工作版本和损坏版本,唯一更改的文件是表单设计器文件。

1 个答案:

答案 0 :(得分:2)

将控件添加到表单中以使其可见。 请参阅 this.Controls.Add(this.label1); 以下

        // 
        // WaveformWindow
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(398, 373);
        this.Name = "WaveformWindow";
        this.ShowInTaskbar = false;
        this.Text = "WaveformWindow";
      **this.Controls.Add(this.label1);**
        this.ResumeLayout(false);

Windows窗体生成代码以自动将所有控件添加到窗体。因此,无论何时遇到此类问题,请删除旧控件并再次拖放它。它必须是可见的。 (编辑以了解问题)

相关问题