/// <summary> /// 在指定的列之前插入一列。 /// </summary> internal void InsertLine(int row, int col) { // 防錯:如果不是有效的儲存格位置就直接返回。 if (!CheckCellPosition(row, col)) { return; } // 建立一列新的點字列,其中預設包含一個空方。 BrailleLine brLine = new BrailleLine(); brLine.Words.Add(BrailleWord.NewBlank()); row = GetBrailleRowIndex(row); int lineIdx = GetBrailleLineIndex(row); m_BrDoc.Lines.Insert(lineIdx, brLine); OnDataChanged(); // 更新 UI。 GridInsertRowAt(row); RefreshRowNumbers(); FillRow(brLine, row, true); // 將焦點移至新插入的那一列的第一個儲存格。 GridFocusCell(new SourceGrid.Position(row, brGrid.FixedColumns), true); }
/// <summary> /// 插入一個空方。 /// </summary> /// <param name="grid"></param> /// <param name="row"></param> /// <param name="col"></param> /// <param name="count">插入幾個空方。</param> internal void InsertBlankCell(int row, int col, int count) { // 防錯:如果不是有效的儲存格位置就直接返回。 if (!CheckCellPosition(row, col)) { return; } int wordIdx = GetBrailleWordIndex(row, col); int lineIdx = GetBrailleLineIndex(row); BrailleLine brLine = m_BrDoc.Lines[lineIdx]; while (count > 0) { brLine.Words.Insert(wordIdx, BrailleWord.NewBlank()); count--; } OnDataChanged(); // Update UI. ReformatRow(row); SourceGrid.Position pos = new SourceGrid.Position(row, col + 1); brGrid.Selection.Focus(pos, true); // 修正選取的儲存格範圍。 }