public void UpdateColumns() { foreach (DataGridViewSettingsValueColumn column in connectionToColumnLookup.Values) { sendRatesGrid.Columns.Remove(column); } connectionToColumnLookup.Clear(); sendRatesGrid.SuspendLayout(); foreach (ConnectionRow connection in ActiveConnections) { StringBuilder sb = new StringBuilder(); sb.AppendLine(connection.Connection.Settings.DeviceInformation.DeviceName.Value); sb.Append(connection.Connection.Settings.DeviceInformation.SerialNumber.Value); DataGridViewSettingsValueColumn column = new DataGridViewSettingsValueColumn { DefaultCellStyle = dataGridViewCellStyle, HeaderText = sb.ToString(), Tag = connection, AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells, Width = 80, MinimumWidth = 80, ValueType = typeof(float), }; sendRatesGrid.Columns.Add(column); connectionToColumnLookup.Add(connection, column); } sendRatesGrid.ResumeLayout(true); CopyValuesToGrid(); readButton.Enabled = ActiveConnections.Count > 0; writeButton.Enabled = ActiveConnections.Count > 0; }
private void sendRatesGrid_CellEndEdit(object sender, DataGridViewCellEventArgs e) { DataGridViewRow row = sendRatesGrid.Rows[e.RowIndex]; DataGridViewSettingsValueColumn column = sendRatesGrid.Columns[e.ColumnIndex] as DataGridViewSettingsValueColumn; object value = row.Cells[e.ColumnIndex].Value; foreach (DataGridViewCell cell in selectedCells) { ISettingValue settingValue = (ISettingValue)cell.Tag; if (settingValue == null) { continue; } cell.Value = value; float floatValue = 0f; if (value == null || float.TryParse(value.ToString(), out floatValue) == false) { floatValue = (float)settingValue.GetValue(); } float settingRemoteValue = (float)settingValue.GetRemoteValue(); if (Math.Abs(floatValue - settingRemoteValue) > float.Epsilon) { cell.Style.ApplyStyle(dataGridViewCellStyleBold); } else { cell.Style.ApplyStyle(dataGridViewCellStyle); } } }