Dlaczego instrukcje wykonują się 3 razy?

0

poniższy kod wykonuje się 3 razy jeżeli warunek jest prawdziwy. nie wiem co jest źle. możliwe że to przez Timer ale wole być pewny.


            aktywneOkno akokno = new aktywneOkno();
            string nazwaOkna = akokno.title;

            if (nazwaOkna == "ALLPlayer")
            {
                switch (kierunekstr)
                {
                    case "157":
                        label8.Text = kierunekstr;
                        MessageBox.Show("udało się 157");
                        SendKeys.Send("{PGDN}");
                        kierunekstr = "1";
                        break;
                    case "126":
                        label8.Text = kierunekstr;
                        MessageBox.Show("udało się 126");
                        SendKeys.Send("{ENTER}");
                        kierunekstr = "1";

                        break;
                }
            }
0

Za mało kodu.
BTW nazwy klas nazywamy AktywneOkno.

0

Nigdy nie porównuj OBIEKTÓW - w tym wypadku String w ten sposób: if (nazwaOkna == "ALLPlayer"). Do tego służy metoda equals i jej powinieneś użyć - możliwe, że to jest powodem błędu.

[edit] Sorry, dopiero teraz zauważyłem, że chodzi o C# a nie Jave, ale przypuszczam, że w C# również należy użyć jakiejś metody porównującej a nie operatora '=='.

0

klasa aktywneOkno podaje nazwę zaznaczonemu w tej chwili okienka, aplikacji. zapisuje je do string nazwaOkna. a wszystko jest w Timer. nie wiem czemu ale SendKeys wykonuje się wtedy 2 albo 3 razy tak samo MessageBox tyle razy się otwiera. Co mam jeszcze podać?

        private void timer1_Tick(object sender, EventArgs e)
        {
            aktywneOkno akokno = new aktywneOkno();
            string nazwaOkna = akokno.title;

              if (nazwaOkna.Equals("ALLPlayer") == true)
              {
                  switch (kierunekstr)
                  {
                      case "157":
                        label8.Text = kierunekstr;
                        SendKeys.Send("{PGDN}");
                        MessageBox.Show("udało się);
                        kierunekstr = "1";
                        break;
                      case "126":
                        label8.Text = kierunekstr;
                        SendKeys.Send("{ENTER}");
                        MessageBox.Show("udało się);
                        kierunekstr = "1";
                        break;
                }
              }
            }
0

Ta metoda musi się odpalać 2-3 razy. Pokaż jak ten timer ustawiasz.

0

o jakie ustawienia chodzi w timer? Jak o Interval to sprawdzałem na 500 i 1000.

0

No musisz gdzieś ten timer kilka razy uruchamiać.
Bo chyba nie chodzi Ci o to że co sekundę nowy MessageBox się pojawia?

0

MessageBox był tylko przykładowo dany żebym wiedział że została wykonana instrukcja. ogólnie już go nie mam w kodzie tylko sprawdzam czy mi SendKeys zadziałał. timer uruchamia się przy włączeniu programu i działa cały czas do wyłączenia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0