C# 当窗口不在焦点C时侦听器丢失#
我有一个听众C# 当窗口不在焦点C时侦听器丢失#,c#,winforms,leap-motion,C#,Winforms,Leap Motion,我有一个听众 public class LeapEventListener : Listener { public string frame = string.Empty; public string Frame { get { return frame; } } public event EventHandler FrameChanged; private void SetFrame(string value) { if (value
public class LeapEventListener : Listener
{
public string frame = string.Empty;
public string Frame { get { return frame; } }
public event EventHandler FrameChanged;
private void SetFrame(string value)
{
if (value == null) value = string.Empty;
if (frame == value) return;
frame = value;
var handler = FrameChanged;
if (handler != null) handler(this, EventArgs.Empty);
}
public override void OnFrame (Controller controller)
{
Frame frame = controller.Frame();
FingerList fingers = frame.Fingers;
SetFrame("Frame id: " + frame.Id);
}
public override void OnInit (Controller controller)
{
Console.WriteLine ("Initialized");
}
public override void OnConnect (Controller controller)
{
Console.WriteLine ("Connected");
//If using gestures, enable them:
controller.EnableGesture (Gesture.GestureType.TYPE_CIRCLE);
}
//Not dispatched when running in debugger
public override void OnDisconnect (Controller controller)
{
Console.WriteLine ("Disconnected");
}
}
然后在我的Form1.cs中使用global
Controller controller = new Controller();
LeapEventListener listener = new LeapEventListener();
并以公开形式1()
一切正常,直到我从窗口离开焦点。如果我离开焦点,标签文本不再改变,然后我带着焦点回到窗口,标签文本开始随着来自监听器的信息而改变
当我没有聚焦窗口时,为什么监听器不工作?Leap API有前台和后台应用程序的概念。默认情况下,只有前台应用程序接收跟踪数据。这是为了防止应用程序在用户与其他应用程序交互时接收输入 如果您确实希望在后台使用帧,并且确信它不会导致问题,则可以请求后台帧策略: 当另一个非Leap应用程序具有焦点时,启用此策略将获得帧。如果在启用Leap的应用程序运行时需要帧,则可以使用未记录的策略标志(1
string fingers = listener.frame;
controller.AddListener(listener);
label1.DataBindings.Add("Text", listener, "Frame");