예제 #1
0
        private static bool DoPaste(this DataGridView grid, Control parent, ValidateCellValues validate, Action <string[], int> addRow)
        {
            string textClip = ClipboardHelper.GetClipboardText(parent);

            if (string.IsNullOrEmpty(textClip) || !grid.EndEdit())
            {
                return(false);
            }

            return(DoPasteText(parent, textClip, grid, validate, addRow));
        }
예제 #2
0
        public static bool DoPaste(this DataGridView grid, IWin32Window parent, ValidateCellValues validate)
        {
            string textClip = GetClipBoardText(parent);
            if (string.IsNullOrEmpty(textClip) || !grid.EndEdit())
                return false;

            grid.SuspendLayout();
            // Remove everything, and paste new contents
            grid.Rows.Clear();

            bool result = DoPasteText(parent, textClip, grid, validate,
                (values, lineNum) => grid.Rows.Add(values.Cast<object>().ToArray()));

            grid.ResumeLayout();
            return result;
        }
예제 #3
0
        public static bool DoPaste(this DataGridView grid, Control parent, ValidateCellValues validate)
        {
            string textClip = ClipboardHelper.GetClipboardText(parent);

            if (string.IsNullOrEmpty(textClip) || !grid.EndEdit())
            {
                return(false);
            }

            grid.SuspendLayout();
            // Remove everything, and paste new contents
            grid.Rows.Clear();

            bool result = DoPasteText(parent, textClip, grid, validate,
                                      (values, lineNum) => grid.Rows.Add(values.Cast <object>().ToArray()));

            grid.ResumeLayout();
            return(result);
        }
예제 #4
0
        private static bool DoPasteText(IWin32Window parent, string textClip, DataGridView grid, ValidateCellValues validate, Action <string[], int> addRow)
        {
            TextReader reader = new StringReader(textClip);

            int columnCount = grid.Columns.Cast <DataGridViewColumn>().Count(column => column.Visible);

            int    lineNum = 0;
            String line;

            while ((line = reader.ReadLine()) != null)
            {
                lineNum++;
                String[] columns = line.Split(TextUtil.SEPARATOR_TSV);
                if (columns.Length == 0)
                {
                    continue;
                }
                if (columns.Length > columnCount)
                {
                    string message = string.Format(Resources.SettingsUIUtil_DoPasteText_Incorrect_number_of_columns__0__found_on_line__1__,
                                                   columns.Length, lineNum);
                    MessageDlg.Show(parent, message);
                    return(false);
                }

                for (int i = 0; i < columns.Length; i++)
                {
                    columns[i] = columns[i].Trim();
                }

                if (!validate(columns, parent, lineNum))
                {
                    return(false);
                }

                addRow(columns, lineNum);
            }

            return(true);
        }
예제 #5
0
 public static bool DoPaste(this DataGridView grid, Control parent, ValidateCellValues validate, Action <string[]> addRow)
 {
     return(grid.DoPaste(parent, validate, (s, i) => addRow(s)));
 }
예제 #6
0
 public static bool DoPaste(this DataGridView grid, IWin32Window parent, ValidateCellValues validate, Action<string[]> addRow)
 {
     return grid.DoPaste(parent, validate, (s, i) => addRow(s));
 }
예제 #7
0
        private static bool DoPasteText(IWin32Window parent, string textClip, DataGridView grid, ValidateCellValues validate, Action<string[], int> addRow)
        {
            TextReader reader = new StringReader(textClip);

            int columnCount = grid.Columns.Cast<DataGridViewColumn>().Count(column => column.Visible);

            int lineNum = 0;
            String line;
            while ((line = reader.ReadLine()) != null)
            {
                lineNum++;
                String[] columns = line.Split(TextUtil.SEPARATOR_TSV);
                if (columns.Length == 0)
                    continue;
                if (columns.Length > columnCount)
                {
                    string message = string.Format(Resources.SettingsUIUtil_DoPasteText_Incorrect_number_of_columns__0__found_on_line__1__,
                                                   columns.Length, lineNum);
                    MessageDlg.Show(parent, message);
                    return false;
                }

                for (int i = 0; i < columns.Length; i++)
                    columns[i] = columns[i].Trim();

                if (!validate(columns, parent, lineNum))
                    return false;

                addRow(columns, lineNum);
            }

            return true;
        }
예제 #8
0
        private static bool DoPaste(this DataGridView grid, IWin32Window parent, ValidateCellValues validate, Action<string[], int> addRow)
        {
            string textClip = GetClipBoardText(parent);
            if (string.IsNullOrEmpty(textClip) || !grid.EndEdit())
                return false;

            return DoPasteText(parent, textClip, grid, validate, addRow);
        }