using System.ComponentModel; using IBKRTrader.Core.Workers; namespace IBKRTrader.UI; /// /// Richtet dgv_workerlist vollständig ein: /// Spalten, Binding, Formatierung, Kontext-Menü. /// public static class WorkerListBindingSource { public static void Setup(DataGridView dgv, BindingList source) { dgv.AutoGenerateColumns = false; dgv.ReadOnly = false; dgv.AllowUserToAddRows = false; dgv.RowHeadersVisible = false; dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dgv.MultiSelect = false; // ── Spalten definieren ─────────────────────────────────────────────── dgv.Columns.Clear(); dgv.Columns.Add(new DataGridViewCheckBoxColumn { DataPropertyName = nameof(WorkerInfo.Active), HeaderText = "Active", Width = 65, ReadOnly = false }); dgv.Columns.Add(MakeTextColumn(nameof(WorkerInfo.Type), "Type", 80, false)); dgv.Columns.Add(MakeTextColumn(nameof(WorkerInfo.Module), "Module", 90, false)); dgv.Columns.Add(MakeTextColumn(nameof(WorkerInfo.WorkerName), "Worker Name", 180, false)); dgv.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(WorkerInfo.LastRuntime), HeaderText = "Last Runtime", Width = 150, ReadOnly = true, DefaultCellStyle = { Format = "dd.MM.yyyy HH:mm:ss", NullValue = "–" } }); dgv.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(WorkerInfo.NextRuntime), HeaderText = "Next Runtime", Width = 150, ReadOnly = true, DefaultCellStyle = { Format = "dd.MM.yyyy HH:mm:ss", NullValue = "–" } }); dgv.Columns.Add(MakeTextColumn(nameof(WorkerInfo.RunEvery), "Run Every", 90, false)); dgv.Columns.Add(MakeTextColumn(nameof(WorkerInfo.Info), "Info", 400, false)); // ── Binding ────────────────────────────────────────────────────────── var bs = new BindingSource { DataSource = source }; dgv.DataSource = bs; // ── Styling ────────────────────────────────────────────────────────── dgv.EnableHeadersVisualStyles = false; dgv.ColumnHeadersDefaultCellStyle.Font = new Font("Segoe UI", 9f, FontStyle.Bold); dgv.DefaultCellStyle.Font = new Font("Segoe UI", 9f); dgv.AlternatingRowsDefaultCellStyle.BackColor = Color.FromArgb(240, 240, 255); dgv.GridColor = Color.LightGray; } private static DataGridViewTextBoxColumn MakeTextColumn( string prop, string header, int width, bool readOnly) => new() { DataPropertyName = prop, HeaderText = header, Width = width, ReadOnly = readOnly }; }