private void CellDoubleClicked(DataGridView dgv, DataGridViewCellEventArgs e)
        {
            TimetableSectionModelDataAdapter adapter = null;

            if (dgv == dgvDown)
            {
                Log.Trace("Down train double-clicked: grid coords {0}, {1}", e.ColumnIndex, e.RowIndex);
                adapter = _downTrainsAdapter;
            }
            else if (dgv == dgvUp)
            {
                Log.Trace("Up train double-clicked: grid coords {0}, {1}", e.ColumnIndex, e.RowIndex);
                adapter = _upTrainsAdapter;
            }
            if (adapter == null)
            {
                Log.Warn("Adapter not set!");
                return;
            }
            if (!adapter.IsColumnTrainColumn(e.ColumnIndex))
            {
                Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_ColumnIsNotATrainColumn, e.ColumnIndex);
                return;
            }
            string trainId = adapter.GetTrainIdForViewColumn(e.ColumnIndex);

            Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_SelectedTrainId, trainId);
            if (string.IsNullOrWhiteSpace(trainId))
            {
                return;
            }

            EditTrain(trainId);
        }
        private string GetSelectedTrainId()
        {
            DataGridView selDgv = null;
            TimetableSectionModelDataAdapter adapter = null;

            if (tcMain.SelectedTab == tabGraph)
            {
                return(trainGraph.Model.SelectedTrain?.Id);
            }
            if (tcMain.SelectedTab == tabDown)
            {
                selDgv  = dgvDown;
                adapter = _downTrainsAdapter;
            }
            else if (tcMain.SelectedTab == tabUp)
            {
                selDgv  = dgvUp;
                adapter = _upTrainsAdapter;
            }
            if (selDgv == null || adapter == null)
            {
                return(null);
            }
            if (selDgv.SelectedCells.Count == 0)
            {
                return(null);
            }
            return(adapter.GetTrainIdForViewColumn(selDgv.SelectedCells[0].ColumnIndex));
        }