Cómo verificar si SQLDataReader no tiene filas

Estoy tratando de averiguar cómo comprobar si miSqlDataReader es nulo o no tiene filas (lo que significa que la reserva no existe) y luego muestra un mensaje. Por alguna razón, cuando depuro una vez que toca elWhile dr.Read()) codifíquelo si no tiene un resultado de devolución.

He intentado colocar este código en algunas ubicaciones diferentes, pero ninguno parece disparar el buzón de mensajes si no se devuelven registros

if (dr.GetValue(0) == DBNull.Value || !dr.HasRows)
{
    MessageBox.Show("Reservation Number Does Not Exist","Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
    (read records)
}   

Mi código...

try
{
   using (SqlConnection con = new SqlConnection(connectionString))
   {
      using (SqlCommand cmd = con.CreateCommand())
      {
         con.Open();
         cmd.CommandText = "usp_StoredProcedureName";
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Parameters.AddWithValue("@regnum", regnumber);

         using (SqlDataReader dr = cmd.ExecuteReader())
         {
             //Loop through all the rows, retrieving the columns you need.
             while (dr.Read())
             {
                 lblConf.Text = dr.GetValue(0).ToString();
                 lblName.Text = dr.GetValue(1).ToString() + "," + dr.GetValue(2);
                 lblCompany.Text = dr.GetValue(3).ToString();
                 lblStatus.Text = dr.GetValue(4).ToString();
             }
         }
      }
   }
}
catch (Exception ex)
{
    MessageBox.Show("Can not open connection! ");
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta