using System.Windows.Input; rozwala reszte skryptu

0

Wie ktoś, dlaczego gdy dodam do WF w Visual Studio C# to:

using System.Windows.Input;

to wywala mi błędy z Error KeyEventArgs, a mianowicie

Error	1	'KeyEventArgs' is an ambiguous reference between 'System.Windows.Forms.KeyEventArgs' and 'System.Windows.Input.KeyEventArgs'	C:\Users\Michał\Documents\Visual Studio 2010\Projects\key preview\key preview\Form1.cs	29	51	key preview

?

W aplikacji wykorzystuje blokowanie przycisków za pomocą

 public event KeyPressEventHandler KeyUp;

                    gkh.HookedKeys.Add(Keys.X);
                    gkh.HookedKeys.Add(Keys.Y);
                    gkh.KeyDown += new KeyEventHandler(gkh_KeyDown);
                    gkh.KeyUp += new KeyEventHandler(gkh_KeyUp);

		void gkh_KeyUp(object sender, KeyEventArgs e) {

            
                if (a == 1)
                {
                    e.Handled = true;
                         //wyłącza przyciski X i Y (wybrane kilka linijek wyżej)
                }

i chce zbindować to wyłączenie przycisku pod inny przycisk za pomocą:


private void Form1_Load(object sender, EventArgs e)
        {
            Thread TH = new Thread(Keyboardd);
            TH.SetApartmentState(ApartmentState.STA);
            CheckForIllegalCrossThreadCalls = false;
            TH.Start();

            gkh.HookedKeys.Add(Keys.A);
            gkh.HookedKeys.Add(Keys.B);
               
            
        }


        void Keyboardd()
            {
                bool isRunning = true;
                while (isRunning)
                {
                    Thread.Sleep(40);
                    if ((Keyboard.GetKeyStates(Key.LeftAlt) & KeyStates.Down) > 0)
                         //gdy kliknieto przycsik Lewy Alt, to zmien a na = 1, aby wyłączyć przyciski X i Y w skrypcie powyżej
                    {
                        a = 1;

                    }
                    else
                    {
                        a = 0;
                    }
                }
            }

 

ale nie mogę tego połączyć, bo to drugie wymaga właśnie tego "using System.Windows.Input;", które powoduje błąd w tym pierwszym.

0

Zamiast pisać KeyEventArgs w void gkh_KeyUp(object sender, KeyEventArgs e) { użyj System.Windows.Forms.KeyEventArgs.
Ogólnie to klasa KeyEventArgs istnieje zarówno w System.Windows.Forms oraz w System.Windows.Input i kompilator nie wie o które ci chodzi w tym miejscu.

Alternatywnie zamiast dodawać using możesz wszędzie sobie pisać System.Windows.Input.Keyboard.GetKeyStates() i tak dalej.

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