using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Implab.Diagnostics.Interactive { public partial class TraceViewControl : UserControl { int m_maxEvents = 1000; string m_status = "ready"; readonly LinkedList m_events = new LinkedList(); public TraceViewControl() { InitializeComponent(); var ticks = Environment.TickCount; for (int i = 0; i < 1333; i++) { AddViewItem(new TraceViewItem { indent = i % 4, message = String.Format("Auto generated {0}", i), thread = 2, timestamp = ticks + i*10 }); } } public void AddViewItem(TraceViewItem item) { m_events.AddLast(item); if (m_events.Count > m_maxEvents) m_events.RemoveFirst(); } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); if (m_status != null) e.Graphics.DrawString(m_status, DefaultFont, Brushes.Black, 0, 0); } protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); m_status = String.Format("({0},{1})", e.X, e.Y); Invalidate(); } } }