예제 #1
0
        protected virtual void Command()
        {
            lock (_collection.SyncRoot)
            {
                try
                {
                    Cursor.Current = Cursors.WaitCursor;

                    //Ide kerülnek a kiejlölt sorok
                    var selectedRows = new DataGridViewRow[_dataGridView.SelectedRows.Count];

                    //Kijelölt sorok mentése a selectedRows-ba
                    _dataGridView.SelectedRows.CopyTo(selectedRows, 0);

                    //Ha van kijelölt sor, akkor az első első sor indexe kell.
                    var index = !selectedRows.Any() ? 0 : selectedRows[0].Index;

                    //Eltrölöl minde kijelölés, mivel a beilesztett sor(ok) lesznek kiejlölve.
                    _dataGridView.ClearSelection();

                    //vágólapon lévő object[] megszerzése.
                    var items = _retviredDataObject.GetData(typeof(object[]));

                    if (items != null)
                    {
                        foreach (var item in (Array)items)
                        {
                            //Az új sor az akutális index alá fog kerülni.
                            AddItemToCollection(++index, item);
                            var newRow = _dataGridView.Rows.Cast <DataGridViewRow>().FirstOrDefault(n => n.DataBoundItem == item);
                            if (newRow != null)
                            {
                                newRow.Selected = true;
                            }
                        }
                    }
                }
                finally
                {
                    Cursor.Current = Cursors.Default;
                }
            }
        }