You can pass parameter values to a crystal report programmatically using ReportDocument.DataDefinition.ParameterFields member, which represents a collection of parameters associated with a report.

 
Before you use ParameterFields, you must import CrystalReport.Engine namespace by adding the following line to your code:
    Imports CrystalDecisions.CrystalReports.Engine

In my report, I have two parameters called ParameterName1 and ParameterName2 and I want to pass values as "Parameter1Value" and "Parameter2Value" respectively. If you have more than 2 parameters, just repeat the same steps between "START" and "END" commented lines. Also, read the comments in the code carefully.
' Create a report instance. This is the class added to your project  
' when you added the report to the project  
Dim report As MyReport = New MyReport  
   
' Fill data in DataSet here. Skip this step if your report is calling  
' a stored procedure direct  
Dim ds As DataSet = New DataSet  
' ds = GetDataFromDatabase()  
   
Dim crParameterDiscreteValue As ParameterDiscreteValue  
Dim crParameterFieldDefinitions As ParameterFieldDefinitions  
Dim crParameterFieldLocation As ParameterFieldDefinition  
Dim crParameterValues As ParameterValues  
         
'  
' Get the report parameters collection.  
'  
crParameterFieldDefinitions = report.DataDefinition.ParameterFields  
   
' Add a parameter value - START  
crParameterFieldLocation = crParameterFieldDefinitions.Item("@ParameterName1")  
crParameterValues = crParameterFieldLocation.CurrentValues  
crParameterDiscreteValue = New CrystalDecisions.Shared.ParameterDiscreteValue  
crParameterDiscreteValue.Value = "Parameter1Value"  
crParameterValues.Add(crParameterDiscreteValue)  
crParameterFieldLocation.ApplyCurrentValues(crParameterValues)  
' Add a parameter value - END  
   
crParameterFieldLocation = crParameterFieldDefinitions.Item("@ParameterName2")  
crParameterValues = crParameterFieldLocation.CurrentValues  
crParameterDiscreteValue = New CrystalDecisions.Shared.ParameterDiscreteValue  
crParameterDiscreteValue.Value = "Parameter2Value"  
crParameterValues.Add(crParameterDiscreteValue)  
crParameterFieldLocation.ApplyCurrentValues(crParameterValues)  
   
'  
' Set report's DataSource. Skip this step if your report is calling a   
' stored procedure direct in the report.  
'  
report.SetDataSource(ds)  
   
'  
' Set CrystalReportViewer.ReportSource  
'  
   
CrystalReportViewer1.ReportSource = report