在 VS.NET 表單設計器中,選取 ListView 控制項的 Groups 屬性即可開啟分組編輯器,視覺化設定分組標題與名稱。

檢查服務安裝狀態,設定介面元件啟用狀態:
private bool bolServiceInstalled = false;
private void frmViewLog_Load(object sender, EventArgs e) {
try {
ServiceController ctrl = new ServiceController("MyFileSystemWatcher");
var status = ctrl.Status;
ctrl.Dispose();
bolServiceInstalled = true;
} catch (Exception ex) {
lblServiceInstall.Text = "服務尚未安裝";
myTimer.Enabled = false;
btnStartService.Enabled = false;
btnStopService.Enabled = false;
bolServiceInstalled = false;
MessageBox.Show(this, "服務尚未安裝:" + ex.Message, "系統錯誤");
}
btnRefresh_Click(null, null);
}
查詢資料庫、建立 ListViewItem、依事件類型設定分組與圖示:
private void btnRefresh_Click(object sender, EventArgs e) {
this.Cursor = Cursors.WaitCursor;
lvwRecord.BeginUpdate();
try {
lvwRecord.Items.Clear();
using (IDbCommand cmd = Util.DBConnection.CreateCommand()) {
cmd.CommandText = "SELECT RecordID, ObjectName, WatchTime, EventStyle FROM FileSystemLog ORDER BY WatchTime";
using (IDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
ListViewItem item = new ListViewItem();
item.Tag = reader.GetValue(0).ToString();
item.Text = reader.GetValue(1).ToString();
item.SubItems.Add(reader.GetValue(2).ToString());
string style = reader.GetValue(3).ToString().Trim().ToLower();
item.SubItems.Add(style);
switch (style) {
case "created": item.Group = lvwRecord.Groups[0]; item.ImageIndex = 0; break;
case "changed": item.Group = lvwRecord.Groups[1]; item.ImageIndex = 1; break;
case "deleted": item.Group = lvwRecord.Groups[2]; item.ImageIndex = 2; break;
case "renamed": item.Group = lvwRecord.Groups[3]; item.ImageIndex = 3; break;
}
item.StateImageIndex = item.ImageIndex;
lvwRecord.Items.Add(item);
}
}
}
myStatus.Text = $"共列出 {lvwRecord.Items.Count} 個記錄";
} catch (Exception ex) {
MessageBox.Show(ex.ToString(), "系統錯誤");
} finally {
this.Cursor = Cursors.Default;
lvwRecord.EndUpdate();
}
}