2011-10-31 145 views
0

我有2个函数,一个是保存数据(),而另一个是SendEmail()传递单选按钮参数给另一个函数在vb.net

在保存数据()被选择保存在单选按钮,和SendMail()在最后被调用。

在SendMail()单选按钮被“测试”,然后基于广播选择发送两个电子邮件中的一个。

我遇到的问题是正确传递参数。我尝试了好几种不同的方法,但这些参数不被发送到Sendmail的()

单选按钮是/否问题

为什么参数没有被传递有什么想法?

以下是我有:

Protected Function SaveData() 
... 
Q1 = Me.rblnewqst1.SelectedValue 
     Q2 = Me.rblnewqst2.SelectedValue 
     Q3 = Me.rblnewqst3.SelectedValue 
     Q4 = Me.rblnewqst4.SelectedValue 
     Q5 = Me.rblnewqst5.SelectedValue 

....

和SendEmail()是

Protected Sub SendEmail(ByVal rblnewqst1 As Object, ByVal rblnewqst2 As Object, ByVal rblnewqst3 As Object, ByVal rblnewqst4 As Object, ByVal rblnewqst5 As Object) 

    If rblnewqst1.SelectedValue = 2 Or rblnewqst2.SelectedValue = 2 Or rblnewqst3.SelectedValue = 2 Or rblnewqst4.SelectedValue = 2 Or rblnewqst5.SelectedValue = 2 Then 

     Dim sResponseFromName As String = "[email protected]" 
     Dim sResponseToName As String = txtEmail.Text 
     Dim sResponseSubject As String = "Denied" 
     Dim sResponseBody As String = "Message>" 


     Try 
      Dim mm As New MailMessage(sResponseFromName, sResponseToName) 
      Dim SMTP As New SmtpClient 

      SMTP.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis 

      mm.Subject = sResponseSubject 
      mm.Body = sResponseBody 
      mm.IsBodyHtml = True 

      Try 

       SMTP.Send(mm) 

      Catch exSmtpException As SmtpException 
       Dim stemp As String = exSmtpException.Message.ToString 
      End Try 

     Catch ex As ApplicationException 
      Dim stemp As String = ex.InnerException.Message.ToString 
     End Try 

    Else 
     Dim sResponseFromName As String = "[email protected]" 
     Dim sResponseToName As String = txtEmail.Text 
     Dim sResponseSubject As String = "Accepted" 
     Dim sResponseBody As String = "MESSAGE....." 

     Try 
      Dim mm As New MailMessage(sResponseFromName, sResponseToName) 
      Dim SMTP As New SmtpClient 

      SMTP.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis 

      mm.Subject = sResponseSubject 
      mm.Body = sResponseBody 
      mm.IsBodyHtml = True 

      Try 

       SMTP.Send(mm) 

      Catch exSmtpException As SmtpException 
       Dim stemp As String = exSmtpException.Message.ToString 
      End Try 

     Catch ex As ApplicationException 
      Dim stemp As String = ex.InnerException.Message.ToString 
     End Try 
    End If 

End Sub 
+0

什么是变量Q1,Q2等声明为?如果我是你,我会打开Option Explicit和Option Strict,然后看看你的数据类型转换问题(如果有的话)。 – HardCode

+1

这不能强调,始终与选项严格和显式打开。起初它可能有点痛苦,但它会让你成为一个更好的程序员。 –

回答

1

像硬编码在他的评论中提到的,我建议你总是使用Option Explicit和Option Strict on。

我会做的第一件事是改变发送邮件部分的工作方式,从单选按钮中获取值。你的If是检查和整数值,所以我会使用Integer作为类型。

所以更多的东西一样:

Protected Sub SendEmail(ByVal q1 As Integer, ByVal q2 As Integer) 

If q1 = 2 Or q2 = 2 Then 
etc... 
End IF 

我缩短列表,所以我没有给尽可能多的类型。一般而言,我认为发送值比整个对象更好,除非您因特定原因需要完整控制。另外,除非你没有其他选择,否则发送对象不是我所推荐的。

为了测试它,我建议的另一件事是在sendEmail Sub中设置一个断点,使用快速监视来查看正在发送到正在检查的方法的实际对象/类型。

相关问题