Como verificar se o SQLDataReader não possui linhas

Eu estou tentando descobrir como verificar se o meuSqlDataReader é nulo ou não possui linhas (o que significa que a reserva não existe) e exibe uma caixa de mensagem. Por algum motivo, quando eu depurar uma vez que atinge oWhile dr.Read()) código ele sai se não tiver um resultado de retorno.

Eu tentei colocar esse código em alguns locais diferentes, mas nenhum parece disparar o messagebox se nenhum registro for retornado

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

Meu 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! ");
}

questionAnswers(4)

yourAnswerToTheQuestion