如何区分的用户vs方案的变化框它?
-
25-09-2019 - |
题
我有逻辑上的框OnCheckedChanged事件,火灾在形成的负载以及当用户的变化检查的状态。我想的逻辑,只有执行根据用户的行动。
有一个灵活的方式检测用户vs方案的变化,不依赖于设置检查用户变数?
解决方案
我通常有一个布尔标志我的形式,我以前编程变更值设置为true。然后,事件处理程序可以检查标志,以查看它是否是用户或编程。
其他提示
尝试一些美好的旧的反射?
StackFrame lastCall = new StackFrame(3);
if (lastCall.GetMethod().Name != "OnClick")
{
// Programmatic Code
}
else
{
// User Code
}
呼叫堆是这样的:
- 击
- set_Checked
- OnCheckChanged
所以你需要回去3区分谁设置检查
不记得不过,有一些东西,可以混乱的呼吁叠,这不是100%可靠的,但是你可以延长这一点来搜索为起源。
我曾尝试这和它的工作。
bool user_action = false;
StackTrace stackTrace = new StackTrace();
StackFrame[] stackFrames = stackTrace.GetFrames();
foreach (StackFrame stackFrame in stackFrames)
{
if(stackFrame.GetMethod().Name == "WmMouseDown")
{
user_action = true;
break;
}
}
if (user_action)
{
MessageBox.Show("User");
}
else
{
MessageBox.Show("Code");
}
不隶属于 StackOverflow