Banaly problem z while i ConsoleKeyInfo

0

Witam,mam banalny problem,otóż kiedy zostanie wcisnięty klawisz inny niż UpArrow i Downarrow pętla zostanie przerwana ja sobie wymyśliłem to tak ale nie działa więc proszę o pomoc:

 int X = 0;
        ConsoleKeyInfo W;
        while (W.Key!=ConsoleKey.UpArrow&&W.Key!=ConsoleKey.DownArrow)
        {
            W = Console.ReadKey();
            if (W.Key == ConsoleKey.UpArrow)//Wpisywanie wartości do walut
            {
                X--;
                if (X < 0)
                {
                    Console.SetCursorPosition(3, 4);
                    X = 3;
                }
                Console.SetCursorPosition(4, X);
            
            }
            if (W.Key == ConsoleKey.DownArrow)
            {
                X++;
                if (X > 3)
                {
                    Console.SetCursorPosition(4, 0);
                    X = 0;
                }
                    Console.SetCursorPosition(4, X);
                
            }
        
        }
        }
}

Proszę o pomoc
Pozdrawiam
Marek

0

Tzn. co dokładnie nie działa? Może lepiej zrób pętlę do-while, gdzie w pierwszym do dasz W = Console.ReadKey(); i potem resztę, jeżeli będzie to co potrzeba przerywasz, jeżeli nie kontynuujesz i tak do us***** śmierci :)

0

Świetny pomyśł z do-while ale teraz poradziłem sobie w bardziej chytry pomysł ( MUAHAHAHAHAHAA )

ConsoleKeyInfo W;
            W = Console.ReadKey();
            if (W.Key == ConsoleKey.UpArrow)//Wpisywanie wartości do walut)w górę
            {
                X--;
                if (X < 0)
                {
                    Console.SetCursorPosition(3, 4);
                    X = 3;
                }
                Console.SetCursorPosition(4, X);
           }
            if (W.Key == ConsoleKey.DownArrow) //w dół
            {
                X++;
                if (X > 3)
                {
                    Console.SetCursorPosition(4, 0);
                    X = 0;
                }
                Console.SetCursorPosition(4, X);
            }
            if (W.Key==ConsoleKey.Enter)
            {
                break;
            } 

oczywiśnie nie mogę zmienić na dowolny klawisz ale mi enter potrzebny bo tak program ma działać ;)
Pozdrawiam

Ale teraz mam inny prooblem,kiedy wpisuję Convert.("ui tutaj zamiast mieć duuużo motod mam tylko Equals i costamEquals) dlaczego tak jest?
Pozdrawiam

0

Niemożliwe. Convert jest klasą statyczną i jej wszystkie metody też. Popatrz no dokładnie :) Może wpisujesz Converter albo coś?

1

U mnie trochę więcej tego jest. Nie zdefiniowałeś sobie gdzieś klasy Convert niezawierającej metod statycznych?

0
 using System;
class MainClass
{
    static void wrl(string tekst)
    {
        Console.WriteLine(tekst);
    }
    static void Switch()
    {
        Options O = new Options();
        Convert C = new Convert();
        ConsoleKeyInfo S = Console.ReadKey();
        switch (S.KeyChar)
        {
            case '1':
                {
                    Console.Clear();
                    O.Value();
                    break;
                }
        
        }
    }

    public static void Main()
    {
        wrl("1.Przelicznik");
        wrl("2.Opcje");
        wrl("3.Zakończ");
        Switch();
    }
}



class Options
{
    static void wrl(string tekst)
    {
        Console.WriteLine(tekst);
    }
    
    public void Value()
    {
        double GBR, USD, EUR,SEK;
        wrl("SEK:");
        wrl("GBR:");
        wrl("USD:");
        wrl("EUR:");
        Console.SetCursorPosition(4, 0);
        int X = 0;
        #region gotowe
        while (true)
        {
            
            ConsoleKeyInfo W;
            W = Console.ReadKey();
            if (W.Key == ConsoleKey.UpArrow)//Wpisywanie wartości do walut)w górę
            {
                X--;
                if (X < 0)
                {
                    Console.SetCursorPosition(3, 4);
                    X = 3;
                }
                Console.SetCursorPosition(4, X);
           }
            if (W.Key == ConsoleKey.DownArrow) //w dół
            {
                X++;
                if (X > 3)
                {
                    Console.SetCursorPosition(4, 0);
                    X = 0;
                }
                Console.SetCursorPosition(4, X);
            }
            if (W.Key==ConsoleKey.Enter)
            {
                break;
            }
        
            #endregion
            
            switch (X)
            {
                case 0:
                    {
                       GBR = double.Parse(Console.ReadLine());
                        break;
                    }
                case 1:
                    {
                       USD= double.Parse(Console.ReadLine());
                        break;
                    }
                case 2:
                    {
                        EUR = double.Parse(Console.ReadLine());
                        break;
                    }
                case 3:
                    {
                        SEK = double.Parse(Console.ReadLine());
                        break;
                    }
            }

            

        
        }
        
       
        Console.ReadLine();
    }
}
                  


class Convert
{

}

Tutaj jest cały kod.Interesujące jest to ,że kiedy wpisuję System.convert to mam wszystkie metody ( a zawsze wystarczyło samo cornvert )
Pozdr,
Marek

0

Wywal tę pustą klasę Convert. Po co ją w ogóle zrobiłeś?

0

Ahhhhhhhhhhhhhh.... Rozwiązał Pan to ,dzięki bardzo :)
Pozdrawiam
Marek

(Aż chce mi się śmiać ,że jestem takim idiotą ;) )

0

Nie ja, tylko ŁF w poście sprzed 22 minut.

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