Это находится в небольшом ответе на комментарий Joel о создании немного более оптимизированной версии. Вместо того, чтобы возвратить случайную дату непосредственно, почему бы не возвратить функцию генератора, которая может быть вызвана неоднократно для создания случайной даты.
Func<DateTime> RandomDayFunc()
{
DateTime start = new DateTime(1995, 1, 1);
Random gen = new Random();
int range = ((TimeSpan)(DateTime.Today - start)).Days;
return () => start.AddDays(gen.Next(range));
}
Предполагая, что вы все еще находитесь в событии мыши обработчик, вы можете проверить значение Keyboard.Modifiers . Я не думаю, что есть способ получить информацию о модификаторах из самого события, поэтому вам нужно напрямую опросить клавиатуру.
Согласно ответу Энди, вы используете Keyboard.Modifiers. Майк