Попробуйте какое-нибудь старое доброе отражение?
StackFrame lastCall = new StackFrame(3);
if (lastCall.GetMethod().Name != "OnClick")
{
// Programmatic Code
}
else
{
// User Code
}
Стек вызовов выглядит так:
- OnClick
- set_Checked
- OnCheckChanged
Таким образом, вам нужно вернуться назад 3, чтобы определить, кто установил Проверено
Не забывайте, однако, что некоторые вещи могут портить стек вызовов, он не на 100% надежен, но вы можете немного расширить его для поиска исходного источника.