2016-04-24 53 views
0

我在编写一个窗体窗体应用程序,并设法从窗体编码中删除所有错误。然而,当我试图启动应用程序,我得到异常:有关Windows窗体的初始化错误

抛出异常:“System.TypeInitializationException”在国防部注2.0.exe

附加信息:为“Mod_Note_2._0.Form1的类型初始'抛出了一个例外。

窗体的代码如下:

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

namespace Mod_Note_2._0 
{ 
    public partial class Form1 : Form 
    { 
    //Defines variables 

    public static string moduleTitle; 
    public static string[] codRetr = Directory.GetFiles("" , "*code.txt"); 
    public static string[] notes; 
    public static int i = 0; 
    public static List<string> codDrop; 
    public string[] codDropT; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void programmingAndDataStructureToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     moduleTitle = "CMP1127M"; 
     SetTextBoxes item = new SetTextBoxes(); 
     item.moduleTitle1 = moduleTitle; 
    } 

    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void richTextBox1_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void ModuleSummary_TextChanged(object sender, EventArgs e) 
    { 
     SetTextBoxes.modSynopsis = ModuleSummary.Text; 
     File.WriteAllText(SetTextBoxes.modSynLocation, SetTextBoxes.modSynopsis); 
    } 

    private void AssignBox_TextChanged(object sender, EventArgs e) 
    { 
     SetTextBoxes.modAssign = AssignBox.Text; 
     File.WriteAllText(SetTextBoxes.modAssignLoc, SetTextBoxes.modAssign); 
    } 

    private void AddNewModule_Click(object sender, EventArgs e) 
    { 
     Form2 form2 = new Form2(); 
     form2.Show(); 
    } 

    //Manages deleting of modules 
    private void deleteCurrentModuleToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     File.Delete(SetTextBoxes.modNoLocation); 
     File.Delete(SetTextBoxes.modTitleLocation); 
     File.Delete(SetTextBoxes.modSynLocation); 
     File.Delete(SetTextBoxes.modLOsLocation); 
     File.Delete(SetTextBoxes.modAssignLoc); 
    } 

    private void modulesToolStripMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) 
    { 

    } 

    //Puts the information into text boxes 
    private class SetTextBoxes 
    { 
     public string moduleTitle1; 
     public static string modNoLocation; 
     public static string modNo; 
     public static string modTitle; 
     public static string modTitleLocation; 
     public static string modSynopsis; 
     public static string modSynLocation; 
     public static string modLOs; 
     public static string modLOsLocation; 
     public static string modAssign; 
     public static string modAssignLoc; 
     public static string notesLoc; 

     public SetTextBoxes() 
     { 
      Form1 frm = new Form1(); 
      notesLoc = moduleTitle + "N"; 

      modNoLocation = moduleTitle1 + "code.txt"; 
      modNo = File.ReadAllText(modNoLocation); 
      frm.ModuleCode.Text = modNo; 

      modTitleLocation = moduleTitle + "title.txt"; 
      modTitle = File.ReadAllText(modTitleLocation); 
      frm.Title.Text = modTitle; 

      modSynLocation = moduleTitle + "synopsis.txt"; 
      modSynopsis = File.ReadAllText(modSynLocation); 
      frm.ModuleSummary.Text = modSynopsis; 


      modLOsLocation = moduleTitle + "LOs.txt"; 
      modLOs = File.ReadAllText(modLOsLocation); 
      frm.LOsTextbox.Text = modLOs; 

      modAssignLoc = moduleTitle + "assignments.txt"; 
      modAssign = File.ReadAllText(modAssignLoc); 
      frm.AssignBox.Text = modAssign; 

      //Resets the Notes array 
      Array.Clear(notes, 0, 1000000); 

      //Retrieves and sets the notes 
      notes = Directory.GetFiles("", notesLoc); 

     } 


    } 

    private void modulesToolStripMenuItem_Click(object sender, EventArgs e) 
    { 

    } 



    private void modulesToolStripMenuItem_DropDownOpened_1(object sender, EventArgs e) 
    { 
    } 

    private void modulesToolStripMenuItem_DropDownOpened(object sender, EventArgs e) 
    { 
     Array.Clear(codRetr, 0, 1000000); 
     i = 0; 

     foreach (string s in codRetr) 
     { 
      codDrop.Add(s); 
     } 

     codDropT = codDrop.ToArray(); 
    } 



    private void button1_Click(object sender, EventArgs e) 
    { 
     Form3 form3 = new Form3(); 
     form3.Show(); 
    } 
} 

}

编辑:在这里发生异常 Right at initialisation. For some reason

异常代码

System.TypeInitializationException was unhandled 
HResult=-2146233036 
Message=The type initializer for 'Mod_Note_2._0.Form1' threw an exception. 
Source=Mod Note 2.0 
TypeName=Mod_Note_2._0.Form1 
StackTrace: 
at Mod_Note_2._0.Form1..ctor() 
at Mod_Note_2._0.Program.Main() in   
C:\Users\Samuel\Documents\Computer_Science\PaDS\Mod Note 2.0\Mod Note 
2.0\Program.cs:line 19 
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
at System.Threading.ThreadHelper.ThreadStart() 
InnerException: 
    HResult=-2147024809 
    Message=The path is not of a legal form. 
    Source=mscorlib 
    StackTrace: 
     at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths) 
     at System.IO.Path.GetFullPathInternal(String path) 
     at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost) 
     at System.IO.Directory.GetFiles(String path, String searchPattern) 
     at Mod_Note_2._0.Form1..cctor() in C:\Users\Samuel\Documents\Computer_Science\PaDS\Mod Note 2.0\Mod Note 2.0\Form1.cs:line 19 
    InnerException: 
+0

点击“查看详细信息...”链接,在下一个窗口中展开异常并转到“内部异常”,直到您阅读除“类型初始值设定...等 –

+0

之外的消息它说{”路径是“ – GiggyLapisar

+0

检查解决方案 –

回答

1

这是该行导致异常:

public static string[] codRetr = Directory.GetFiles("" , "*code.txt"); 

GetFiles的,如果你想在当前目录下,你可以把第一个参数应该是路径

“”

所以你的行应该是: public static string [] codRetr = Directory.GetFiles(“。”,“* code.txt”);

+0

刚刚添加的地方,只是有点解释问题 – GiggyLapisar

+0

工作。最后打开了其余的程序问题。 – GiggyLapisar