Fangen des Scroll-Ereignis in gtk #
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.
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.