Frage

Welches Ereignis, von dem Widget soll mir fangen, wenn ich einige Codes ausführen muß, wenn ScrolledWindow gescrollt wird?

Ths Widgets Baum Ich verwende ist: (Mein widget: Gtk.Container)> Ansichtsfenster> ScrolledWindow

habe ich versucht, viele Kombinationen von Scroll, ScrollChild etc. Event-Handler für alle von ihnen verbunden, aber das einzige, das alles läuft, ist ein Ereignis von Ansichtsfenster, dass etwa SetScrollAdjutstments geändert werden (x = 0, y = 0), wenn die Anwendung gestartet wird.

War es hilfreich?

Lösung

Sie sollten an den GtkAdjustment in der jeweiligen Scrollbar leben und sein „ geändert “ Ereignis reagieren. Da Scroll-Leisten Rang sind, verwenden Sie den gtk_range_get_adjustment() Anruf, dies zu tun.

Andere Tipps

Abroller Antwort richtig war. Nur meinen Code, falls jemand Entsendung muss eine vollständige Lösung:

// in the xxx : Gtk.Container class:

protected override void OnParentSet(Widget previous_parent) {
    Parent.ParentSet += HandleParentParentSet;
}

void HandleParentParentSet(object o, ParentSetArgs args) {
    ScrolledWindow swn = (o as Widget).Parent as ScrolledWindow;
    swn.Vadjustment.ValueChanged += HandleScrollChanged;
}

void HandleScrollChanged(object sender, EventArgs e) {
    // vertical value changed
}

Wenn Sie die Eltern eines dieses Widgets ändern, oder müssen die Typen ändern und die fest codierten Typen zu ändern und zu handhaben von der bisherigen Mutter trennen.

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