bool hiddenmarkershouldbeshown = false; // if to show it now public ExtPanelRollUp() { SuspendLayout(); this.Height = UnrolledHeight; pinbutton = new ExtCheckBox(); pinbutton.Appearance = Appearance.Normal; pinbutton.FlatStyle = FlatStyle.Popup; pinbutton.Size = new Size(24, 24); pinbutton.Image = ExtendedControls.Properties.Resources.pindownwhite2; //colours 222 and 255 used pinbutton.ImageUnchecked = ExtendedControls.Properties.Resources.pinupwhite2; pinbutton.Checked = true; pinbutton.CheckedChanged += Pinbutton_CheckedChanged; pinbutton.Name = "RUP Pinbutton"; hiddenmarker1 = new ExtDrawnPanelNoTheme(); hiddenmarker1.Name = "Hidden marker"; hiddenmarker1.ImageSelected = ExtPanelDrawn.ImageType.Bars; hiddenmarker1.Visible = false; hiddenmarker1.Padding = new Padding(0); hiddenmarker1.Click += Hiddenmarker_Click; hiddenmarker2 = new ExtDrawnPanelNoTheme(); hiddenmarker2.Name = "Hidden marker"; hiddenmarker2.ImageSelected = ExtPanelDrawn.ImageType.Bars; hiddenmarker2.Visible = false; hiddenmarker2.Padding = new Padding(0); hiddenmarker2.Click += Hiddenmarker_Click; Controls.Add(pinbutton); Controls.Add(hiddenmarker1); Controls.Add(hiddenmarker2); ResumeLayout(); mode = Mode.None; timer = new Timer(); timer.Tick += Timer_Tick; pinbutton.Visible = false; }
private void Button_Click(object sender, EventArgs e) { ExtPanelDrawn but = sender as ExtPanelDrawn; OutlineState rur = but.Tag as OutlineState; if (Parent is ExtPanelDataGridViewScroll) // this implements an efficient visibility change system { rur.r.expanded = !rur.r.expanded; if (rur.r.expanded == false) // off is easy - hide everything { (Parent as ExtPanelDataGridViewScroll).ChangeVisibility(rur.r.start, rur.r.end - KeepLastEntriesVisibleOnRollUp, rur.r.expanded); } else { BaseUtils.IntRangeList irl = new BaseUtils.IntRangeList(); irl.Add(rur.r.start, rur.r.end); Vis(Outlines.IndexOf(rur), irl); // remove visibility of any children marked hidden irl.Sort(); (Parent as ExtPanelDataGridViewScroll).ChangeVisibility(rur.r.start, rur.r.end, irl); } } }