2010-10-13 3 views
4

Je viens de me débarrasser de toutes mes erreurs de compilation. Un des problèmes était que j'ai accidentellement renommé le formulaire visuel lui-même au lieu d'une des zones de texte individuelles sur mon interface graphique. Quand je suis allé changer ce que j'avais foiré dans le code, il semblait fonctionner à nouveau. Cependant, chaque fois que j'appuie sur F5 pour déboguer, j'obtiens une fenêtre plus petite et vide comme interface graphique, et non celle que j'ai conçue dans Visual Studio. Aucune suggestion?Pourquoi j'obtiens un formulaire vierge lorsque je débogue en C#?

Voici mon principal (Forms) Code de classe:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 


namespace beehive1 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     Worker[] workers = new Worker[4]; 

     workers[0] = new Worker(new string[] { "Nectar collector", "Honey Manufacturing" }); 
     workers[1] = new Worker(new string[] { "Egg Care", "Baby Bee Tutoring" }); 
     workers[2] = new Worker(new string[] { "Hive Maintenance", "Sting Patrol" }); 
     workers[3] = new Worker(new string[] { "Nectar Collector", "Honey Manufacturing", 
      "Egg Care", "Baby Bee Manufacturing", "Hive Maintenance", "Sting Patrol" }); 


     queen = new Queen(workers); 
    } 

    Queen queen; 

    private void assignJob_Click(object sender, EventArgs e) 
    { 
     if (queen.AssignWork(workerBeeJob.Text, (int)shifts.Value) == false) 
      MessageBox.Show("No Workers Are Available To Do The Job " + workerBeeJob.Text + "", "The Queen Bee Says..."); 
     else 
      MessageBox.Show("The job " + workerBeeJob.Text + " will be done in " + shifts.Value + " shifts", "The Queen Bee Says..."); 

    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     report.Text = queen.WorkTheNextShift(); 
    } 
} 
} 

EDIT: Code Designer:

namespace beehive1 
{ 
partial class Form1 
{ 
    /// <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.shiftLabel = new System.Windows.Forms.Label(); 
     this.workerBeeJob = new System.Windows.Forms.ComboBox(); 
     this.jobLabel = new System.Windows.Forms.Label(); 
     this.shifts = new System.Windows.Forms.NumericUpDown(); 
     this.groupBox1 = new System.Windows.Forms.GroupBox(); 
     this.assignJob = new System.Windows.Forms.Button(); 
     this.nextShift = new System.Windows.Forms.Button(); 
     this.report = new System.Windows.Forms.TextBox(); 
     ((System.ComponentModel.ISupportInitialize)(this.shifts)).BeginInit(); 
     this.groupBox1.SuspendLayout(); 
     this.SuspendLayout(); 
     // 
     // shiftLabel 
     // 
     this.shiftLabel.AutoSize = true; 
     this.shiftLabel.Location = new System.Drawing.Point(287, 26); 
     this.shiftLabel.Name = "shiftLabel"; 
     this.shiftLabel.Size = new System.Drawing.Size(33, 13); 
     this.shiftLabel.TabIndex = 0; 
     this.shiftLabel.Text = "Shifts"; 
     // 
     // workerBeeJob 
     // 
     this.workerBeeJob.FormattingEnabled = true; 
     this.workerBeeJob.Location = new System.Drawing.Point(27, 42); 
     this.workerBeeJob.Name = "workerBeeJob"; 
     this.workerBeeJob.Size = new System.Drawing.Size(121, 21); 
     this.workerBeeJob.TabIndex = 1; 
     // 
     // jobLabel 
     // 
     this.jobLabel.AutoSize = true; 
     this.jobLabel.Location = new System.Drawing.Point(24, 26); 
     this.jobLabel.Name = "jobLabel"; 
     this.jobLabel.Size = new System.Drawing.Size(84, 13); 
     this.jobLabel.TabIndex = 2; 
     this.jobLabel.Text = "Worker Bee Job"; 
     // 
     // shifts 
     // 
     this.shifts.Location = new System.Drawing.Point(290, 42); 
     this.shifts.Name = "shifts"; 
     this.shifts.Size = new System.Drawing.Size(74, 20); 
     this.shifts.TabIndex = 3; 
     // 
     // groupBox1 
     // 
     this.groupBox1.Controls.Add(this.assignJob); 
     this.groupBox1.Controls.Add(this.shiftLabel); 
     this.groupBox1.Controls.Add(this.workerBeeJob); 
     this.groupBox1.Controls.Add(this.jobLabel); 
     this.groupBox1.Controls.Add(this.shifts); 
     this.groupBox1.Location = new System.Drawing.Point(32, 12); 
     this.groupBox1.Name = "groupBox1"; 
     this.groupBox1.Size = new System.Drawing.Size(384, 150); 
     this.groupBox1.TabIndex = 4; 
     this.groupBox1.TabStop = false; 
     this.groupBox1.Text = "Worker Bee Job Assignments"; 
     // 
     // assignJob 
     // 
     this.assignJob.Location = new System.Drawing.Point(27, 70); 
     this.assignJob.Name = "assignJob"; 
     this.assignJob.Size = new System.Drawing.Size(121, 23); 
     this.assignJob.TabIndex = 4; 
     this.assignJob.Text = "Assign This Job"; 
     this.assignJob.UseVisualStyleBackColor = true; 
     this.assignJob.Click += new System.EventHandler(this.assignJob_Click); 
     // 
     // nextShift 
     // 
     this.nextShift.Location = new System.Drawing.Point(422, 38); 
     this.nextShift.Name = "nextShift"; 
     this.nextShift.Size = new System.Drawing.Size(79, 77); 
     this.nextShift.TabIndex = 5; 
     this.nextShift.Text = "Work The Next Shift"; 
     this.nextShift.UseVisualStyleBackColor = true; 
     this.nextShift.Click += new System.EventHandler(this.button2_Click); 
     // 
     // report 
     // 
     this.report.Location = new System.Drawing.Point(32, 199); 
     this.report.Multiline = true; 
     this.report.Name = "report"; 
     this.report.Size = new System.Drawing.Size(384, 157); 
     this.report.TabIndex = 6; 
     // 
     // Form 
     // 
     this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     this.ClientSize = new System.Drawing.Size(539, 398); 
     this.Controls.Add(this.report); 
     this.Controls.Add(this.nextShift); 
     this.Controls.Add(this.groupBox1); 
     this.Name = "Form"; 
     this.Text = "Beehive Management System"; 
     ((System.ComponentModel.ISupportInitialize)(this.shifts)).EndInit(); 
     this.groupBox1.ResumeLayout(false); 
     this.groupBox1.PerformLayout(); 
     this.ResumeLayout(false); 
     this.PerformLayout(); 

    } 

    #endregion 

    private System.Windows.Forms.Label shiftLabel; 
    private System.Windows.Forms.ComboBox workerBeeJob; 
    private System.Windows.Forms.Label jobLabel; 
    private System.Windows.Forms.NumericUpDown shifts; 
    private System.Windows.Forms.GroupBox groupBox1; 
    private System.Windows.Forms.Button assignJob; 
    private System.Windows.Forms.Button nextShift; 
    private System.Windows.Forms.TextBox report; 
} 
} 

Peut-être que l'application n'est plus connecté à cette classe de formulaire? J'ai essayé une construction propre et un ReBuild, mais cela n'a pas semblé fonctionner.

+0

Montrez-nous votre méthode InitializeComponent. –

+0

s'il vous plaît ajouter le code du concepteur aussi bien –

+0

Modifié pour afficher ce code. – eightonrose

Répondre

1

Vérifiez si vous construisez une instance Form (new Form()) au lieu de Form1() dans votre méthode Main.

+0

dans le code de concepteur que vous voulez dire? – eightonrose

+0

Non, dans la méthode où vous créez une interface graphique et une instance du formulaire; il devrait y avoir une ligne comme Application.Run (new Form1()); – user472157

+0

qui n'a pas fonctionné. – eightonrose

8

La forme vide signifie que InitializeComponent() n'est pas activé ou this.Controls.Add n'ajoute pas correctement les contrôles. essayez de déboguer étape par étape et activez toutes les exceptions CLR pour vous assurer qu'aucune exception ne se produit dans le constructeur. montrez-nous la construction de la forme aussi.

Edit: alt text

cela doit être vérifié non vérifié comme vu ci-dessus. maintenant exécutez votre formulaire en mode débogage et voir si des excecptions se produisent. s'il vous plaît ajouter comment vous appelez votre formulaire sens:

Form1 newForm=new Form1(); 
+0

comment puis-je vous montrer la construction du formulaire? J'ai affiché la classe du formulaire ainsi que la classe de concepteur. Dans la classe de formulaire, j'appelle le InitializeComponent(); function – eightonrose

+0

De plus, il n'y a pas d'erreurs de compilation. ça fonctionnait bien. – eightonrose

+0

Bonjour, montre l'instance du formulaire où vous l'avez créé (peut-être un appel au mauvais formulaire).Je ne voulais pas dire des erreurs de compilation mais des exceptions d'exécution. aller à Debug-> Execptions-> vérifier les exceptions CLR. – user437631

0

studio Parfois visuel obtient poussette (par exemple lors du renommage votre projet/form /). Je luttais avec moi-même jusqu'à ce que j'ai découvert que:

this.Controls.Add(*form object name*); 

lignes manquantes dans le fichier Form1.Designer.cs. Ce sont des lignes "générées automatiquement", mais apparemment la génération automatique ne va pas toujours bien.

J'ai écrit un petit script python rapide et sale qui essaie de résoudre ce problème. Placez le script dans un nouveau répertoire avec une copie de votre fichier xxx.Designer.cs et exécutez-le. Il va générer un fichier peut-être fixe xxx.Designer.cs.fix. Enregistre beaucoup de collage de copie manuelle.

import os 

#get current dir from which the script runs (should also contain the xxx.Designer.cs file) 
daDir = os.path.dirname(os.path.abspath(__file__)) 

#the file extension we're looking for 
ext = ".Designer.cs" 

#list of all files in the dir from which the script runs 
FileList = os.listdir(daDir) 

FileToOpen = "" 
ObjNameStr = "" 
OriginalFileName = "SORRY, AUTO FIXING FAILED" 

#the file to open (any first match for .Designer.cs) 
for str in FileList: 
    if (str.endswith(ext)): 
     OriginalFileName = str 
     FileToOpen = daDir + "\\" + str 
     break 

if FileToOpen != "": 
    print("File found: " + FileToOpen) 
    fileToFix = open(FileToOpen, 'r') 

    FormObjStrList = [] 

    for str in fileToFix: 
     # remove whitepaces/leading tabs 
     str = str.lstrip() 
     # get first part of string: "this.formobjectName" 
     str = str.partition(' ')[0] 
     if str.startswith("this.") and (str.count('.') == 1): 
      ObjNameStr = str 
      #add Form object to list if unique: 
      if (ObjNameStr not in FormObjStrList) and ("this.components" not in ObjNameStr): 
       #No more objects after SuspendLayout property 
       if ("this.SuspendLayout" in ObjNameStr): 
        break 
       else: 
        FormObjStrList.append("this.Controls.Add(" + ObjNameStr + ");") 

    # copy original file to a stringlist that will be the fixed file 
    FixedFile = fileToFix.read().splitlines() 

    # look op the location to copy the new string list into 
    i = 0 
    for str in FixedFile: 
     if ("this.AutoScaleMode" in str): 
      break 
     i += 1 

    i += 1 
    # Create the new xxx.Designer.cs fixed file by adding the extra generated lines 
    for str in FormObjStrList: 
     FixedFile.insert(i, str) 

else: 
    print("No fixable file found. ") 

print(FormObjStrList) 

# Save the new fixed file (manually check/correct this) 
FixedFileSave = open(OriginalFileName + ".fix", 'w') 
FixedFileSave.write("\n".join(FixedFile)) 
FixedFileSave.close() 

print("New fixed file saved as: " + OriginalFileName + ".fix") 
print("Please manually check if the generated file is correct for your project.") 
Questions connexes