Closed towerbit closed 1 month ago
参考 ScrollbarBase 的实现方式,这个问题可以这样解决
using System.ComponentModel;
using GTKSystem.Windows.Forms.GTKControls.ControlBase;
namespace System.Windows.Forms
{
[DesignerCategory("Component")]
public class VScrollBar : ScrollBar
{
public VScrollbarBase self = new VScrollbarBase();
public override object GtkControl => self;
public override Gtk.Adjustment Adjustment { get => self.Adjustment; }
public VScrollBar() : base()
{
}
}
public sealed class VScrollbarBase : Gtk.VScrollbar, IControlGtk
{
public GtkControlOverride Override { get; set; }
internal VScrollbarBase() : base(new Gtk.Adjustment(0, 0, 100, 1, 10, 0))
{
this.Override = new GtkControlOverride(this);
}
}
}
用泛型解决很完美
最新的 H/VScrollBar 实现比我PR的代码要精简和优雅很多。 但是由于 Gtk.ScrollBar(Gtk.Orientation.Vertical) 似乎无法正常实例化垂直方向的滚动条,虽然背景框是垂直的,但是里面的滚动条仍是水平方向且无法滚动,所以我最后只能改为从 Gtk.VScrollBar 类继承,HScrollBar 则没有这个问题。