/// <summary>
        /// Removes the empty rows.
        /// </summary>
        public void RemoveEmptyRows()
        {
            List <UPMContainer> rowsToDelete = new List <UPMContainer>();

            for (int i = 0; i < this.Rows.Count; i++)
            {
                UPMContainer row  = this.Rows[i];
                bool         leer = true;
                for (int j = 0; j < row.Children.Count; j++)
                {
                    if (((UPMStringField)row.Children[j]).StringValue.Length != 0)
                    {
                        leer = false;
                        break;
                    }
                }

                if (leer)
                {
                    rowsToDelete.Add(row);
                }
            }

            List <UPMContainer> rowsNew = new List <UPMContainer>(this.Rows);

            foreach (UPMContainer row in rowsToDelete)
            {
                rowsNew.Remove(row);
            }

            this.Rows = rowsNew;
        }
        /// <summary>
        /// Values the column.
        /// </summary>
        /// <param name="row">The row.</param>
        /// <param name="column">The column.</param>
        /// <returns></returns>
        public UPMStringField ValueColumn(int row, int column)
        {
            if (row < this.Rows.Count)
            {
                UPMContainer currentRow = this.Rows[row];
                if (column < currentRow.Children.Count)
                {
                    return(currentRow.Children[column] as UPMStringField);
                }
            }

            return(null);
        }