Don;t use Parse: use TryParse or TryParseExact. Parse throws an exception is the user makes a mistake - which they do, all too frequently - the TryParse versions don't.
DateTime dt;
if (!DateTime.TryParse(inputString, out dt))
{
...
return;
}
if (dt > DateTime.Now.Date)
{
...
return;
}