internal void Edit()
 {
     if (EditBox != null)
     {
         EndEdit(true);
     }
     if (FocusItem == null)
     {
         return;
     }
     ScrollIntoView(FocusItem.Index);
     EditItem = FocusItem.Source as ITableRow;
     if (EditItem != null && EditItem.GetRowInfo() is CellInfo[] cells && CellInfo.GetFocusColumn(cells, FocusColumn) is int editColumn && editColumn >= 0 && editColumn < cells.Length)
     {
         EditColumn = editColumn;
         EditBox    = new EditBox(cells[EditColumn], EditItem.GetEditValues(EditColumn));
         EditBox.SelectionChanged += EditBox_SelectionChanged;
         RefreshEdit();
     }