private void ChannelSettingsDataGridView_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e) { if (e.RowIndex >= stationIDs_.Count()) { return; } ChannelSettingsColumn column = GetColumnByIndex(e.ColumnIndex); string stationID = stationIDs_[e.RowIndex]; SDStation station = channelSettingsLineup.GetStationByID(stationID); switch (column) { case ChannelSettingsColumn.Callsign: e.Value = station.callsign; break; case ChannelSettingsColumn.DefaultGuideChannels: var defaultChannelNumbers = channelSettingsLineup.defaultStationChannelNumbers[stationID]; e.Value = string.Join("\n", defaultChannelNumbers); break; case ChannelSettingsColumn.DefaultPhysicalChannels: var defaultPhysicalChannels = channelSettingsLineup.defaultStationTuningParams[stationID]; e.Value = string.Join("\n", defaultPhysicalChannels); break; case ChannelSettingsColumn.Download: e.Value = !channelSettingsLineup.ExcludedFromDownload(stationID); break; case ChannelSettingsColumn.EffectiveGuideChannels: var effectiveChannelNumbers = channelSettingsLineup.EffectiveStationChannelNumbers(stationID); e.Value = string.Join("\n", effectiveChannelNumbers); break; case ChannelSettingsColumn.EffectivePhysicalChannels: var effectivePhysicalChannels = channelSettingsLineup.EffectivePhysicalChannelNumbers(stationID); e.Value = string.Join("\n", effectivePhysicalChannels); break; case ChannelSettingsColumn.IncludeInGuide: e.Value = !channelSettingsLineup.ExcludedFromGuide(stationID); break; case ChannelSettingsColumn.Logo: string url = station.logo?.URL; Image image = null; if (url != null) { image = Misc.LoadImageFromURL(url); } e.Value = (image != null) ? image : new Bitmap(1, 1); break; case ChannelSettingsColumn.PhysicalChannelOverride: case ChannelSettingsColumn.GuideChannelOverride: e.Value = "Override"; break; case ChannelSettingsColumn.StationID: e.Value = stationID; break; case ChannelSettingsColumn.StationName: e.Value = station.name; break; } }