Ejemplo n.º 1
0
        private void ClipboardReceived(object sender, RunWorkerCompletedEventArgs eventArgs)
        {
            if (!eventArgs.Cancelled && eventArgs.Error == null)
            {
                ArrayList data = (ArrayList)eventArgs.Result;
                if (data != null)
                {
                    DataObject dataObj = new DataObject();
                    Console.WriteLine("Count: " + data.Count);
                    for (int i = 0; i < data.Count; i++)
                    {
                        string format = (string)data[i++];
                        Console.WriteLine(format);
                        dataObj.SetData(format, data[i]);
                    }

                    if (dataObj.ContainsFileDropList())
                    {
                        StringCollection files = dataObj.GetFileDropList();
                        dataObj = new DataObject();
                        StringCollection adjusted = new StringCollection();
                        foreach (string f in files)
                        {
                            if (!f.StartsWith("\\"))
                            {
                                string toadd = "\\\\" + Ip + "\\" + f.Replace(":", "");
                                Console.WriteLine(toadd);
                                adjusted.Add(toadd);
                            }
                            else
                            {
                                adjusted.Add(f);
                            }
                        }
                        dataObj.SetFileDropList(adjusted);
                    }
                    Clipboard.SetDataObject(dataObj);
                }
            }
        }
Ejemplo n.º 2
0
        } // DataGridMain_DragEnter


        private void DataGridMain_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            if (DataGridMain.SelectedItem != null) {
                // Цепляем выбранный файл
                FileProps fp = DataGridMain.SelectedItem as FileProps;

                // Декомпрессим файл на сервере (на сервере создаётся его расжатая копия)
                Basic.Proxy.DecompressFile(fp.FullName);
                // Которая в последствии и "вытаскивает" пользователь

                // Сделал так т.к. понятия не имею, как можно по средствам
                // Drag&Drop создать в месте куда перетаскивается файл сам файл.
                // Расжать файл в MemoryStream, а из MemeryStream этот файл нужно
                // как-то создать и нужен хотя бы путь места куда происходит Drop.
                // Вопрос: откуда этот путь взять?

                // Получаем файл уже у клиента посредствам перетаскивания
                // Передаваемые данные. Представляет базовую реализацию IDataObject
                DataObject data = new DataObject();

                // Коллекция строк с нашими выделенными объектами, а точнее
                // переносить будем расжатую копию
                StringCollection fileDropList = new StringCollection { fp.FullName+"~" };

                // Список перенесённых данных указывается в виде коллекции строк
                data.SetFileDropList(fileDropList);

                // Сохраняет указанные данные в этом объекте данных
                data.SetData("NFS", 0);

                // Инициирует операцию перетаскивания мышью
                DragDrop.DoDragDrop(DataGridMain, data, DragDropEffects.Copy);

                // Удаляем расжатую копию
                Basic.Proxy.DeleteFile(fp.FullName + "~");
            } // if
        } // DataGridMain_MouseDown