/// <summary> /// 在指定處斷行。 /// </summary> /// <param name="row"></param> /// <param name="col"></param> private void BreakLine(int row, int col) { int wordIdx = GetBrailleWordIndex(row, col); if (wordIdx == 0) // 若在第一個字元處斷行,其實就等於插入一列。 { InsertLine(row, col); return; } int lineIdx = GetBrailleLineIndex(row); BrailleLine brLine = m_BrDoc.Lines[lineIdx]; BrailleLine newLine = brLine.Copy(wordIdx, 255); // 複製到新行。 newLine.TrimEnd(); // 去尾空白。 m_BrDoc.Lines.Insert(lineIdx + 1, newLine); brLine.RemoveRange(wordIdx, 255); // 從原始串列中刪除掉已經複製到新行的點字。 OnDataChanged(); // Update UI // 換上新列 RecreateRow(row); FillRow(m_BrDoc[lineIdx], row, true); // 插入新列 GridInsertRowAt(row + 3); FillRow(m_BrDoc[lineIdx + 1], row + 3, true); // 重新填列號 RefreshRowNumbers(); SourceGrid.Position pos = new SourceGrid.Position(row + 3, brGrid.FixedColumns); brGrid.Selection.Focus(pos, true); // 修正選取的儲存格範圍。 }