OOP: Need tips of my approach in .Net
I would agree that defining pb as an object is a code smell and should be eliminated. 

Either in addition or instead of having Cars and Trucks inherit from ProductsBase(of T) it should implement an interface. 

Suggested Interface:

Public Interface IProducts

    Sub DeleteRows()
    Sub Parse()

End Interface


Then you would declare pb as IProducts. Add any other public properties that will be used by all the derived classes of ProductsBase. 

I'd also suggest creating a class or modules that contains factory methods to generate the new objects. 

Suggested Factory Class: 

Public Class ProductsFactory

    Public Shared Function CreateTruck(fileLocation as string) As IProducts
         Return New Truck(fileLocation)
    End Function

    Public Shared Function CreateCar(fileLocation as string) As IProducts
         Return New Car(fileLocation)
    End Function

End Class


The final code would look like this:

  Dim pb As IProducts 

  If radCars.Checked = True Then   
     pb = ProductsFactory.CreateCar(fileLocation)
  ElseIf radTrucks.Checked = True Then
     pb = ProductsFactory.CreateTruck(fileLocation)
  End If

  pb.Parse()
  pb.AddRows()