【发布时间】:2017-03-08 20:41:02
【问题描述】:
我已经在这个管理应用程序上工作了几个星期,它几乎完成了。当用户单击保存按钮时应该发生什么,VerifyFields() 方法被调用。之后,它应该询问用户是否要保存并发送电子邮件。一旦用户单击是,它应该向 XML 文件中的电子邮件地址发送电子邮件。我收到错误消息“文件:DREmailAddresses.xml 未在:\fs01\Applications\EMS-Manager 中找到。”但是,该文件在那里并且可以访问。我已经复制了下面的相关代码以及image of the error.。
// Begin Email Section
public bool VerifyFields()
{
var status = false;
switch (tbxDynPartNumber.Text)
{
case "":
MessageBox.Show(@"Enter Dynalab Part#", @"Input Needed", MessageBoxButtons.OK, MessageBoxIcon.Error);
status = true;
break;
}
switch (tbxSupplier.Text)
{
case "":
MessageBox.Show(@"Enter Supplier Name", @"Input Needed", MessageBoxButtons.OK, MessageBoxIcon.Error);
status = true;
break;
}
switch (tbxInitiatedBy.Text)
{
case "":
MessageBox.Show(@"Enter Initiator Name", @"Input Needed", MessageBoxButtons.OK, MessageBoxIcon.Error);
status = true;
break;
}
switch (orderQty.Text)
{
case "0":
MessageBox.Show(@"Order Quantity Must Be Greater Than 0!", @"Input Needed", MessageBoxButtons.OK, MessageBoxIcon.Error);
status = true;
break;
}
switch (dtpDate.Text)
{
case "":
MessageBox.Show(@"Enter A Valid Date.", @"Input Needed", MessageBoxButtons.OK, MessageBoxIcon.Error);
status = true;
break;
}
switch (tbxDescription.Text)
{
case "":
MessageBox.Show(@"Enter Description", @"Input Needed", MessageBoxButtons.OK, MessageBoxIcon.Error);
status = true;
break;
}
switch (tbxLocation.Text)
{
case "":
MessageBox.Show(@"Enter Location", @"Input Needed", MessageBoxButtons.OK, MessageBoxIcon.Error);
status = true;
break;
}
switch (tbxDiscrepancyDescription.Text)
{
case "":
MessageBox.Show(@"Enter Discrepancy Description", @"Input Needed", MessageBoxButtons.OK, MessageBoxIcon.Error);
status = true;
break;
}
return status;
}
public void PrepareEmail(string subject, string message)
{
if (MessageBox.Show(@"Are you sure you want to save and send Discrepancy Report: " +tbxDRNumber.Text + @"?\n Click YES to save\n Click NO to cancel" , @"Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
SendEmail(subject,message);
}
}
public Array AddEmail()
{
string[] dRemail = { "", "", "" };
if (File.Exists(@"\\fs01\Applications\EMS-Manager\DREmailAddresses.xml"))
{
XmlReader emailDocument = new XmlTextReader(@"\\fs01\Applications\EMS-Manager\DREmailAddresses.xml");
while (emailDocument.Read())
{
var type = emailDocument.NodeType;
switch (type)
{
case XmlNodeType.Element:
if (emailDocument.Name == "DRCreatedAddEmail")
{
dRemail[0] = emailDocument.ReadInnerXml();
}
if (emailDocument.Name == "DRActionNeededAddEmail")
{
dRemail[1] = emailDocument.ReadInnerXml();
}
if (emailDocument.Name == "DRPendingAddEmail")
{
dRemail[2] = emailDocument.ReadInnerXml();
}
else
{
MessageBox.Show(
@"The file: 'DREmailAddresses.xml' was not found at: \\fs01\Applications\EMS-Manager");
}
break;
}
}
}
return dRemail;
}
【问题讨论】:
-
不是答案,而是 docs for XmlTextReader say 说 “从 .NET Framework 2.0 开始,我们建议您使用 XmlReader.Create 方法创建 XmlReader 实例以利用新功能。 "
-
看代码好像没看懂switch语句。所有这些都可以用简单的 if 语句来完成。
-
您对 if 语句是正确的。修改代码以使用 if 语句代替 switch 语句可能很有用。另外我对编程很陌生,还在学习。我自学了一切,我犯了错误,这都是学习的一部分。然而,我们下周在课堂上讨论 Switch 语句。感谢您的意见。