public void ShowMostRecentMessage() { if (mostRecentQueue.Count == 0 || canShowRecentMessage == false) { return; } canShowRecentMessage = false; Point recentMessageTopPoint = new Point(); recentMessageTopPoint.X = workingArea.X + workingArea.Width - expectedSize.Width; recentMessageTopPoint.Y = workingArea.Y + workingArea.Height; Size formSize = new Size(this.expectedSize.Width, 0); int xOffset = 3; Size controlPaneSize = new Size(this.expectedSize.Width - xOffset * 2, (int)(this.expectedSize.Height * 0.25)); MostRecentControlPane controlPane = new MostRecentControlPane(controlPaneSize); controlPane.Render(); recentMessageForm = new MostRecentMessageForm(formSize, recentMessageTopPoint); recentMessageForm.TopMost = true; recentMessageForm.Disposed += MostRecentMessage_FormDisposed; recentMessageForm.AddMessageControl(controlPane); IEnumerator <VmosoTileDisplayRecord> enumerator = mostRecentQueue.GetEnumerator(); int elementIndex = 0; while (enumerator.MoveNext()) { elementIndex++; VmosoTileDisplayRecord displayRecord = enumerator.Current; Size typeIconPaneSize = new Size(this.expectedSize.Width - xOffset * 2, (int)(this.expectedSize.Height * 0.25)); Size summaryPaneSize = new Size(this.expectedSize.Width - xOffset * 2, (int)(this.expectedSize.Height * 0.375)); Size personalPaneSize = new Size(this.expectedSize.Width - xOffset * 2, (int)(this.expectedSize.Height * 0.375) - 3); TypeIconPane typeIconPane = elementIndex == mostRecentQueue.Count ? new TypeIconPane(typeIconPaneSize, displayRecord, true) : new TypeIconPane(typeIconPaneSize, displayRecord, false); SummaryPane summaryPane = new SummaryPane(summaryPaneSize, displayRecord); PersonalPane personalPane = new PersonalPane(personalPaneSize, displayRecord, Session); typeIconPane.Render(); summaryPane.Render(); personalPane.Render(); recentMessageForm.AddTile(personalPane); recentMessageForm.AddTile(summaryPane); if (elementIndex == mostRecentQueue.Count) { recentMessageForm.AddTile(typeIconPane); } } recentMessageForm.Render(); recentMessageForm.Show(); showMessageTimer.Start(); }