2010-10-13 47 views
4

我剛剛擺脫了我所有的編譯器錯誤。其中一個問題是我不小心重命名了視覺形式本身,而不是我GUI上的單個文本框之一。當我去改變我在代碼中混淆的東西時,它似乎再次起作用。但是,每當我點擊F5進行調試時,我都會得到一個更小的空白窗口作爲我的GUI,而不是我在Visual Studio中設計的窗口。有什麼建議麼?爲什麼我在C#中調試時會得到空白表單?

這裏是我的主(表格)類代碼:

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(); 
    } 
} 
} 

編輯:設計師代碼:

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; 
} 
} 

也許應用程序不再連接到Form類?我試過了一個Clean Build和一個ReBuild,但它似乎沒有工作。

+0

向我們展示您的InitializeComponent方法。 – 2010-10-13 06:39:35

+0

請添加設計器代碼以及 – 2010-10-13 06:39:44

+0

編輯以顯示此代碼。 – eightonrose 2010-10-13 06:47:59

回答

1

檢查您是否在Main方法中構造了一個Form(new Form())實例而不是Form1()

+0

在設計師代碼中是什麼意思? – eightonrose 2010-10-13 07:00:26

+0

不,在創建GUI和表單實例的方法中;應該有像Application.Run(new Form1())這樣的行; – user472157 2010-10-13 07:02:21

+0

沒有工作。 – eightonrose 2010-10-13 07:04:46

8

空格表示InitializeComponent()未被激活或this.Controls.Add未正確添加控件。嘗試逐步調試並激活所有CLR異常,以確保在構造函數中沒有發生異常。向我們展示形式的構造。

編輯: alt text

這應該是檢查不檢查由上述可見的。 現在在調試模式下運行你的表單,看看是否有任何例外發生。 請加你怎麼稱呼你的形意:

Form1 newForm=new Form1(); 
+0

我如何向你展示表單的構建?我已經展示了表單的類以及設計器類。在表單類中我調用了InitializeComponent();函數 – eightonrose 2010-10-13 07:16:11

+0

另外,沒有編譯器錯誤。它曾經運行良好。 – eightonrose 2010-10-13 07:16:44

+0

嗨,顯示您創建它的窗體的實例(可能是調用錯誤的窗體)。我的意思不是編譯器錯誤,而是運行時異常。去Debug-> Execptions->檢查CLR異常。 – user437631 2010-10-13 08:36:48

0

有時視覺工作室獲得越野車(例如重命名你的項目/表格/目錄時)。直到我發現:

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

在Form1.Designer.cs文件中缺少的行。這些是「自動生成」的線路,但顯然汽車生成並不總是順利。

我寫了一個快速又髒的python腳本,試圖解決這個問題。將腳本與xxx.Designer.cs文件的副本一起放入新目錄中並運行它。它會生成一個或許修復了xxx.Designer.cs.fix文件。節省了大量的手動複製粘貼。

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.") 
相關問題