ParseExact expects the string you pass it from the textbox to be in an exact format - no more, no less. So if the user enters "1/6/15", "01/06/15" or "22-01-2015" it will fail, and you will get the error.
Forcing users to enter in a specific format is normally not a good idea - it's best to let them enter in a format they are familiar with (and that matches the Culture setting on their machine) and then convert that with TryParse instead of using ParseExact.
And you don't need Subtract: minus will work just as well:
string date1 = TextBox1.Text;
string date2 = TextBox2.Text;
DateTime dt1, dt2;
if (!DateTime.TryParse(date1, out dt1) || !DateTime.TryParse(date2, out dt2))
{
... Report problem
return;
}
TimeSpan span = dt2 - dt1;
TextBox3.Text = span.TotalDays.ToString();
BTW: Do yourself a favour, and stop using Visual Studio default names for everything - you may remember that "TextBox8" is the mobile number today, but when you have to modify it in three weeks time, will you then? Use descriptive names - "tbMobileNo" for example - and your code becomes easier to read, more self documenting, easier to maintain - and surprisingly quicker to code because Intellisense can get to to "tbMobile" in three keystrokes, where "TextBox8" takes thinking about and 8 keystrokes...