If "negative" values always have -
before each component, you can look for the sign and use two different format strings:
TimeSpan ts;
string s = "-4:-41:-4.102276";
if(s.StartsWith("-"))
ts = -TimeSpan.ParseExact(s, @"\-h\:\-m\:\-s\.ffffff", enUS);
else
ts = TimeSpan.ParseExact(s, @"h\:m\:s\.ffffff", enUS);