public void Log(string line) { Helper.ControlInvokeRequired(LogListView, () => { LogListView.Items.Add(new ListViewItem(line)); LogListView.EnsureVisible(LogListView.Items.Count - 1); LogListView.Refresh(); }); }
private void logTimer_Tick(object sender, EventArgs e) { if (logItemList.Count > 0) { LogListView.BeginUpdate(); while (LogListView.Items.Count > 100) { LogListView.Items.RemoveAt(0); } LogListView.Items.AddRange(logItemList.ToArray()); logItemList.Clear(); if (LogListView.Items.Count > 0) { LogListView.EnsureVisible(LogListView.Items.Count - 1); } LogListView.EndUpdate(); } }
private void OnLogWrite(string from, string type, object content, LogLevel level) { LogListView.Invoke(new MethodInvoker(() => { LogListView.Items.Add(new ListViewItem(DateTime.Now.ToString("HH:mm:ss")).Also(v => { v.SubItems.Add(from); v.SubItems.Add(type); v.SubItems.Add(content.ToString()); v.SubItems.Add("-"); v.ForeColor = Color.FromKnownColor(level.GetAlias <KnownColor>()); })); if (!RealTimeCheckbox.Checked) { return; } LogListView.EnsureVisible(LogListView.Items.Count - 1); LogListView.Items[LogListView.Items.Count - 1].Selected = true; })); }