/// <summary> /// 更新全部数量 /// </summary> /// <param name="num"></param> public void UpAll(int num) { if (lb_num.InvokeRequired) { UpLabel up = new UpLabel(UpAll); this.Invoke(up, num); } else { int n = 0; string text = lb_all.Text; int.TryParse(text.Substring(1, text.Length - 2), out n); n += num; lb_all.Text = "共 " + n + " 个"; } }
private void OnVisibilityChanged(bool visible) { this.ToTop(); Node.SetProcessUnhandledInput(visible); UpLabel.Iter(l => l.Active = visible && this.CanGoUp()); CloseLabel.Iter(l => l.Active = visible); if (!visible) { ItemsContainer.GetChildren() .OfType <Node>() .Filter(c => !EmptyLabel.Contains(c)) .Iter(ItemsContainer.FreeChild); } }
protected override void PostConstruct() { base.PostConstruct(); var disposed = Disposed.Where(identity); OnItemsChange .Do(items => Items = items) .TakeUntil(disposed) .Subscribe(HandleItemsChange, this); OnNavigate .Do(_ => UpLabel.Iter(l => l.Active = this.CanGoUp())) .Select(i => i.Bind(v => v.GetPath()).Reverse()) .Select(p => string.Join(" > ", p.Map(v => v.DisplayName))) .TakeUntil(disposed) .Subscribe(v => Breadcrumb.Iter(b => b.Text = v), this); UpLabel .Map(l => l.OnAction) .ToObservable() .Switch() .TakeUntil(disposed) .Subscribe(_ => this.GoUp()); CloseLabel .Map(l => l.OnAction) .ToObservable() .Switch() .TakeUntil(disposed) .Subscribe(_ => this.Hide()); Node.OnVisibilityChange() .StartWith(Visible) .TakeUntil(disposed) .Subscribe(OnVisibilityChanged, this); if (BackAction.IsSome) { Node.OnUnhandledInput() .Where(e => BackAction.Exists(v => e.IsActionPressed(v)) && this.CanGoUp()) .TakeUntil(disposed) .Do(_ => Node.GetTree().SetInputAsHandled()) .Subscribe(_ => this.GoUp(), this); } }
public void Dispose() { FloorNumLabel.Dispose(); UpLabel.Dispose(); DownLabel.Dispose(); }