Cara mendeteksi tombol panah secara manual di gtk# c#

Saya mencoba membuat game di Monodevelop menggunakan Gtk#-C# di mana pemain menggerakkan karakter dengan tombol panah. Namun, penekanan tombol panah tidak didaftarkan.

Apakah ada cara untuk mendeteksi penekanan tombol secara manual, melewati pengendali default?

Beberapa pencarian di Google dan Stack Overflow belum memberikan jawaban tentang cara mendeteksi tombol panah menggunakan Gtk-C#.

Ini adalah kode yang saya gunakan untuk mencoba mendeteksi tombol panah:

protected void Key_Press (object obj, KeyPressEventArgs args)
{
    //Let the rest of the program know what keys were pressed.
    if (pressedKeys.Contains (args.Event.Key))
        return;
    pressedKeys.Add (args.Event.Key, args.Event.Key);
}

Dan berikut adalah program dasar yang saya buat untuk mencoba mencari cara mendeteksi tombol panah:

public MainWindow (): base (Gtk.WindowType.Toplevel)
{
    Build ();

    this.KeyPressEvent += new KeyPressEventHandler (KeyPress);
}

protected void KeyPress (object sender, KeyPressEventArgs args)
{
    if (args.Event.Key == Gdk.Key.Up)
        return;

    label1.Text = args.Event.Key.ToString ();
}

person Rene    schedule 06.03.2016    source sumber


Jawaban (1)


Yang perlu Anda lakukan hanyalah menambahkan KeyPress handler Anda seperti ini:

KeyPressEvent += KeyPress;

Dan tambahkan atribut GLib.ConnectBefore ke acara Anda sehingga Anda menerimanya sebelum pengendali aplikasi menggunakannya:

[GLib.ConnectBefore]

Contoh Potong/Tempel:

using System;
using Gtk;

public partial class MainWindow : Gtk.Window
{
    public MainWindow() : base(Gtk.WindowType.Toplevel)
    {
        Build();
        KeyPressEvent += KeyPress;
    }

    [GLib.ConnectBefore]
    protected void KeyPress(object sender, KeyPressEventArgs args)
    {
        Console.WriteLine(args.Event.Key);
    }

    protected void OnDeleteEvent(object sender, DeleteEventArgs a)
    {
        KeyPressEvent -= KeyPress;
        Application.Quit();
        a.RetVal = true;
    }
}

Contoh Keluaran:

Left
Left
Right
Down
Up
Shift_R
Down
Left
Right
Up
Right
Up
Down
person SushiHangover    schedule 07.03.2016
comment
Saya sedang mencari sesuatu yang lain tetapi ini memperbaiki masalah lain. terima kasih - person Madivad; 31.07.2018