private void split_MouseClick(object sender, MouseEventArgs e) { SplitContainerButtons clickedButton = SplitContainerButtons.None; foreach (var btn in _buttons) { if (btn.Rect.Contains(e.Location)) { clickedButton = btn.Type; } } switch (clickedButton) { case SplitContainerButtons.ChangeOrientation: split.Orientation = (Orientation)(((int)split.Orientation + 1) % 2); break; case SplitContainerButtons.Panel1: split.Panel1Collapsed = !split.Panel1Collapsed; break; case SplitContainerButtons.Panel2: split.Panel2Collapsed = !split.Panel2Collapsed; break; } }
/// <summary>Initializes a new instance of the <see cref="SplitContainerTools"/> class.</summary> /// <param name="container"> /// The <see cref="System.Windows.Forms.SplitContainer"/> to which this instance will be bound. /// </param> public SplitContainerTools(SplitContainer container) { split = container; _keepFocus = false; _showGripper = true; _showButtons = SplitContainerButtons.None; _panel1Border = false; _panel2Border = false; _buttons = new SplitContainerButton[] { }; _tooltip = new ToolTip(); _splitRectInternal = typeof(SplitContainer).GetField("splitterRect", Reflection.BindingFlags.NonPublic | Reflection.BindingFlags.GetField | Reflection.BindingFlags.Instance); split.Paint += split_Paint; split.MouseDown += split_MouseDown; split.MouseUp += split_MouseUp; split.MouseClick += split_MouseClick; split.MouseMove += split_MouseMove; split.MouseLeave += (o, e) => split.Cursor = Cursors.Default; split.SplitterMoved += split_SplitterMoved; split.SizeChanged += split_Resize; split.Disposed += (o, e) => _tooltip.Dispose(); ((Panel)split.Panel1).ClientSizeChanged += Split_Panel_CollapsedChanged; ((Panel)split.Panel2).LocationChanged += Split_Panel_CollapsedChanged; }