Frage

System.Windows.Forms.Form.CancelButton:

  

Ruft die Tastensteuerung, die angeklickt wird, wenn der Benutzer die ESC-Taste drückt.

Also, im Grunde ist es dasselbe wie das .Default Fenster in GTK # Paramater, mit Ausnahme der Flucht anstelle der Enter-Taste. Sind diese vorhanden ist, und bin ich fehle es einfach, oder würde ich versuchen, etwas zu hacken zusammen, um diese Funktionalität zu erhalten?

Edit: Da zwei Menschen dies getan haben, ist diese Frage über GTK # , nicht Winforms. Ich brauche die gleiche Funktionalität wie CancelButton in WinForms zu bekommen, aber ich brauche es in GTK #.

War es hilfreich?

Lösung

Nachdem er eine Weile mit dieser liebäugelte, scheint es, dass im Gegensatz zu WinForms (ohne mit ihnen zu spielen um zumindest), GTK scheint richtig wichtige Ereignisse zu überliefern den Widget Baum, so der folgende Code funktioniert gut mit Fokus auf jedem Widget auf dem Fenster:

public class ConnectWindow : GTK.Window
{
    public ConnectWindow(Window parent)
        : base(WindowType.Toplevel)
    {
        this.Parent = parent;
        _init();
    }

    private void _init()
    {
        this.Title = "Connect to...";
        this.Modal = true;
        this.WindowPosition = WindowPosition.Center;
        this.KeyReleaseEvent += ConnectWindow_KeyReleaseEvent;
        // [snip] other initialisation stuff
    }

    void ConnectWindow_KeyReleaseEvent(object o, KeyReleaseEventArgs args)
    {
        if (args.Event.Key == Gdk.Key.Escape)
        {
            btnCancel.Activate();
        }
    }
}

Andere Tipps

Um dies automatisch zu arbeiten, gibt es ein paar Dinge, die Sie tun müssen:

  • Verwenden Sie Showdialog, wenn das Fenster angezeigt wird. Es funktioniert nur für modale Dialoge.
  • Auf dem Formular die CancelButton Eigenschaft auf die Schaltfläche, die Sie einstellen, dass Sie die Taste, um abzubrechen verwenden.

Wenn Sie diese Dinge tun, die Escape-Taste drücken, wird automatisch das Fenster schließen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top