Событие C # не работает после первой формы с точками данных взгляда - PullRequest
0 голосов
/ 17 сентября 2018

Я делаю приложение Form, которое выполняет движения глаз во время выполнения процесса и снова использует данные глаза для передачи следующей формы.Если я выполняю переход с данными движения глаз, «eyeTracker.GazeDataReceived + = EyeTracker_GazeDataReceived» работает только для первой формы.

private void Form7_Load(object sender, EventArgs e)
    {
        IEyeTracker eyeTracker = EyeTrackingOperations.FindAllEyeTrackers().FirstOrDefault();
        GazeData(eyeTracker);  
    }


private static void GazeData(IEyeTracker eyeTracker)
    {
        if (Scores.a1 == 0)
        {
            // Start listening to gaze data.
            eyeTracker.GazeDataReceived += EyeTracker_GazeDataReceived;
        }
        else
        {
            eyeTracker.GazeDataReceived -= EyeTracker_GazeDataReceived;
            OkudugunuAnlama1 okudugunuAnlama1 = new OkudugunuAnlama1();
            okudugunuAnlama1.ShowDialog();
            Form7 form7 = new Form7();
            form7.Visible = false;
        }

    }

private static void EyeTracker_GazeDataReceived(object sender, GazeDataEventArgs e)
     {
        IEyeTracker eyeTracker = EyeTrackingOperations.FindAllEyeTrackers().FirstOrDefault();


        if (Scores.a1 == 0)
        {
            FileInfo file = new FileInfo(dosya_yolu);
            using (ExcelPackage excelPackage = new ExcelPackage(file))
            {
                ...// Some codes write the gaze data to exel 

            }

            Scores.i = Scores.i + 2;
        }
        else if (Scores.a1 == 1)
        {
            while (0.8 < e.LeftEye.GazePoint.PositionOnDisplayArea.X & e.LeftEye.GazePoint.PositionOnDisplayArea.X < 0.99)       //Kırmızı daireye yeterince baktı mı?
            {
                System.Threading.Thread.Sleep(3000); 
                GazeData(eyeTracker);

            }

        }

    }

Этот код выполняется успешно, но после передачи следующей формы, некоторые коды ниже,не сработало событие "eyeTracker.GazeDataReceived + = EyeTracker_GazeDataReceived" метод.

private void Form13_Load(object sender, EventArgs e)
    {
        IEyeTracker eyeTracker = EyeTrackingOperations.FindAllEyeTrackers().FirstOrDefault();
        GazeData(eyeTracker);
    }


private static void GazeData(IEyeTracker eyeTracker)
    {

        if (Scores.b1 == 0)
        {
            //HERE not work
            eyeTracker.GazeDataReceived += EyeTracker_GazeDataReceived;
        }
        else
        {
            eyeTracker.GazeDataReceived -= EyeTracker_GazeDataReceived;
            OkudugunuAnlama2cs okudugunuAnlama2 = new OkudugunuAnlama2cs();
            okudugunuAnlama2.ShowDialog();

            Form13 form13 = new Form13();
            form13.Visible = false;
        }
    }


private static void EyeTracker_GazeDataReceived(object sender, GazeDataEventArgs e)
     {
        IEyeTracker eyeTracker = EyeTrackingOperations.FindAllEyeTrackers().FirstOrDefault();


        if (Scores.a1 == 0)
        {
            FileInfo file = new FileInfo(dosya_yolu);
            using (ExcelPackage excelPackage = new ExcelPackage(file))
            {
                ...// Some codes write the gaze data to exel 

            }

            Scores.i = Scores.i + 2;
        }
        else if (Scores.a1 == 1)
        {
            while (0.8 < e.LeftEye.GazePoint.PositionOnDisplayArea.X & e.LeftEye.GazePoint.PositionOnDisplayArea.X < 0.99)       //Kırmızı daireye yeterince baktı mı?
            {
                System.Threading.Thread.Sleep(3000); 
                GazeData(eyeTracker);

            }

        }

    }

Если вы делаете переход с помощью кнопок, коды работают.Но я должен сделать с очками взора.Пожалуйста, помогите о втором событии.

...