我想创建一个简单的c#应用程序(我的第一次尝试在c#所以请善待)。我创建了一个带有文本框的表单来捕获一个“认证码”,然后验证这个认证码,然后一个webclient获取一个xml文件,将这个认证码传递给请求。发回的数据被解析为e.c.t.c#初始化后的第二个窗体关闭
我想要做的是一旦xml返回并且我做了检查以验证它是否正常。我想关闭第一个窗体并加载第二个窗体,我将以一种漂亮的格式以编程方式添加显示xml数据所需的窗体组件。
我的问题是,我无法让第二种形式保持开放(毫无疑问,以错误的方式调用第二种形式)。这是我有什么:
// close current form
this.Close();
//open new form
xmlViewForm xmlView = new xmlViewForm();
xmlView.Show();
我敢肯定,你已经发现了现在正在犯的错误。但仅仅为了完整性陈述明显,它关闭第一种形式,打开第二种形式,然后立即退出程序(第二种形式明显闪烁一秒钟)。
我已经尝试了一些事情,但他们没有工作,使用Application.Run(new xmlViewForm());
(包括替代的实例化类和使用方法show()
显然你知道不工作,现在我做太多,但我不明白C#甚至远程足以明白为什么。
感谢所有帮助:)
谢谢基思,这正是我需要的。我正要问Sean为什么你不能关闭它,如果有一种解决方法(我目前的应用程序可以很好地隐藏它,但我可以想象更大的应用程序需要关闭主窗口来限制资源使用,除非它们使用一个空表格作为主控制器并立即隐藏)。你的解释是完美的,我讨厌知道如何修理某些东西,但不知道修理工作的原因,不让我不在哪里。 – Lee
“主要形式”没有什么特别之处。它恰好通常是你入口点方法的最后一行。你可以在你的Application.Run(Form)调用之后运行额外的代码,这样说关闭表单'向应用程序发出用户想要关闭整个程序的信号'是误导性的。 – Mufaka
包括OP在内的六人认为我是对的。你是唯一一个在我的答案中发现问题的人。多次调用'Application.Run()',或者在一次调用Run()之后调用除清理代码之外的任何东西都是错误的代码。假设OP没有遵循你的建议,当主窗体关闭时,消息泵到Windows将被关闭,程序将继续超出对Run()的调用,通常会立即从主方法返回,如App.Run ()是最后一行。你的回答错了。像专业一样处理它,并从中学习而不是报复。 – KeithS