Hi egirardi,
Nice control !
Your problem seems to be caused by multiple declarations of the KeyValuePair class, both within uScheduler and uScheduleDay.
Although those two class declarations are identical and with the same name, they are not the same class type, so if one part of your application is using Type A (from uScheduler) and another part of your application is trying to cast it to Type B (from uScheduleDay), the cast will fail.
I recommend that you make a seperate class file out of the KeyValuePair declaration to minimize the risk of double declaring it in the future. You may also want to consider changing the name of the type, as .NET already has a KeyValuePair type which is easy to confuse with yours, but that's just a matter of preference and there's no need to change the name of your type.
Hope this helps,
Palli