private void CreateMemberHeaders() { columnHeaderLayoutPanel.SuspendLayout(); columnHeaderLayoutPanel.Controls.Clear(); columnHeaderLayoutPanel.ColumnCount = 1; Panel filler = new Panel(); columnHeaderLayoutPanel.Controls.Add(filler); columnHeaderLayoutPanel.ColumnStyles[0] = new ColumnStyle(SizeType.Absolute, buttonSize / 2); filler.Dock = DockStyle.Fill; columnHeaderLayoutPanel.ColumnCount++; if (trip.members.Count > 0) { foreach (Member member in trip.members) { columnHeaderLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100)); UserHeaderControl userHeaderControl = new UserHeaderControl(member); columnHeaderLayoutPanel.Controls.Add(userHeaderControl); userHeaderControl.Dock = DockStyle.Fill; columnHeaderLayoutPanel.ColumnCount++; } totalHeaderControl = new TotalHeaderControl(); columnHeaderLayoutPanel.Controls.Add(totalHeaderControl); columnHeaderLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100)); totalHeaderControl.Dock = DockStyle.Fill; } columnHeaderLayoutPanel.ResumeLayout(); }
private void gridPanel_MouseClick(object sender, MouseEventArgs e) { if (currentRow != null && currentColumn != null) { bool buttonPressed = false; int i = 0; while (!buttonPressed && i < orderFocusButtons.Count()) { RoundButton button = orderFocusButtons[i]; if (button.GetButtonRegion(new Rectangle(currentColumn.Left, currentRow.Top, currentColumn.Width, currentRow.Height), buttonSize).IsVisible(e.Location)) { buttonPressed = true; button.Invoke(); } i++; } if (buttonPressed) // we handled a button press, nothing else to do here { return; } gridPanel.Invalidate(new Rectangle(currentColumn.Left - buttonSize, currentRow.Top, currentColumn.Width + buttonSize * 2, currentRow.Height)); } Control columnCtrl = columnHeaderLayoutPanel.GetChildAtPoint(new Point(e.X, 0)); Control rowCtrl = rowHeaderLayoutPanel.GetChildAtPoint(new Point(0, e.Y)); if (rowCtrl is BottleRowHeaderControl && columnCtrl is UserHeaderControl && (rowCtrl != currentRow || columnCtrl != currentColumn)) { currentRow = (BottleRowHeaderControl)rowCtrl; currentColumn = (UserHeaderControl)columnCtrl; } else { currentRow = null; currentColumn = null; } if (currentRow != null && currentColumn != null) { gridPanel.Invalidate(new Rectangle(currentColumn.Left - buttonSize, currentRow.Top, currentColumn.Width + buttonSize * 2, currentRow.Height)); } }