Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
1

Программа-проводник: реализовать функции "Копировать" и "Вставить"

19.05.2012, 23:41. Показов 1757. Ответов 1
Метки нет (Все метки)

Заранее всем спасибо, вообщем есть программа, что-то типо проводника.
Но из тех функций, что я писал, работает только удалить
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace DirFileProject
{
    public partial class Form1 : Form
    {
        string FPath;
        string backPath;
        List<string> ls = new List<string>();
        public Form1()
        {
            InitializeComponent();
 
        }
       
 
        private void CopyDir(DirectoryInfo soursDir, DirectoryInfo destDir)
        {
            while (true)
            {
                CreateDir(soursDir, destDir);
 
                //теперь проверяем наличие в ней папок
                DirectoryInfo[] dirs = soursDir.GetDirectories();
                if (dirs.Length > 0)
                {
                    foreach (DirectoryInfo di in dirs)
                    {
                        DirectoryInfo dir = new DirectoryInfo(destDir.FullName.ToString() + "\\" + di.Name.ToString());
                        CopyDir(di, dir);
                    }
                    break;
                }
                else break;
            }
        }
 
        //создаем папку
        private void CreateDir(DirectoryInfo soursDir, DirectoryInfo destDir)
        {
            if (!destDir.Exists) destDir.Create();
 
            //проверяем наличие файлов
            FileInfo[] fls = soursDir.GetFiles();
            if (fls.Length > 0) //копируем если есть
                foreach (FileInfo fi in fls)
                    fi.CopyTo(destDir.FullName.ToString() + "\\" + fi.Name.ToString(), true);
        }
 
        void GetLocDir()
        {
            listView1.Items.Clear();
            this.Text = "Мой компьютер";
            String[] LogicalDrives = Environment.GetLogicalDrives();
            foreach (string s in LogicalDrives)
            {
 
                listView1.Items.Add(s, 1);
                ls.Add(s);
            }
        }
 
        void GetFiles()
        {           
            listView1.BeginUpdate();
            
            try
            {
 
                string[] dirs = Directory.GetDirectories(FPath);
                ls.Clear();
 
                try
                {
                    DirectoryInfo dInfo = new DirectoryInfo(FPath);
                    backPath = dInfo.Parent.FullName;
                }
                catch { }
 
                listView1.Items.Clear();
 
                foreach (string s in dirs)
                {
                    //   if ((File.GetAttributes(s) & FileAttributes.Hidden) == FileAttributes.Hidden)
                    //       continue;
 
                    string dirname = System.IO.Path.GetFileName(s);
                    listView1.Items.Add(dirname, 1);
                    ls.Add(s);
                }
 
                string[] files = Directory.GetFiles(FPath);
                foreach (string s in files)
                {
                    string filename = System.IO.Path.GetFileName(s);
                    listView1.Items.Add(filename, 0);
                }
 
            }
            catch (Exception ex) {MessageBox.Show(ex.Message); }
            listView1.EndUpdate();
        }
 
        private void listView1_ItemActivate(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count == 0)
                return;
 
            ListViewItem item = listView1.SelectedItems[0];
            if (item.ImageIndex == 1)
            {
                string it = item.Text;
                string title = "";
                foreach (string s in ls)
                {
                    try
                    {
                        if (s.Substring(s.Length - it.Length, it.Length) == it)
                        {
                            FPath = s;
                            title = s;
                        }
                    }
                    catch { }
                }
                try
                {
                    string[] dirs = Directory.GetDirectories(FPath);
                    this.Text = title;
                    GetFiles();
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }
                
            else if (item.ImageIndex == 0)
            {
                string start = this.Text + "\\" + item.Text;
                
                System.Diagnostics.Process.Start(start);
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
 
            bool b = false;
            String[] LogicalDrives = Environment.GetLogicalDrives();
            foreach (string s in LogicalDrives)
            {
                if (backPath == s && FPath == s) b = true;
            }
            if (backPath != null && !b)
            {
                this.Text = backPath;
                FPath = backPath;
                GetFiles();
            }
            else
            {
                GetLocDir();
            }
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            GetLocDir();
        }
 
        public void копироватьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ListViewItem item = listView1.SelectedItems[0];
            string copy = this.Text + "\\" + item.Text;
            if (item.ImageIndex == 1)
            {
                DirectoryInfo soursDir = new DirectoryInfo(copy); //папка из которой копировать
                DirectoryInfo destDir = new DirectoryInfo("D:\\new" + item.Text); //куда копируешь
                System.Threading.Thread MyThread1 =
                new System.Threading.Thread(delegate() { CopyDir(soursDir, destDir); });
                MyThread1.Start();               
                
 
            }
            else
            {
                System.Threading.Thread MyThread1 =
                   new System.Threading.Thread(delegate() { File.Copy(copy, "D:\\new" + item.Text); });
                MyThread1.Start();             
 
                                
            }
            GetFiles();
        }
 
        private void открытьСПомощьюСтдСредствToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ListViewItem item = listView1.SelectedItems[0];
            string start = this.Text + "\\" + item.Text;
            System.Diagnostics.Process.Start(start);
        }
 
        private void вставитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
           ListViewItem item = listView1.SelectedItems[0];
             string paste = this.Text + "\\" + item.Text;
               File.Copy(, paste);
        }
 
        private void удалитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string message = "Вы действительно хотите удалить?";
            string caption = "Удаление файла";
            MessageBoxButtons buttons = MessageBoxButtons.YesNo;
            DialogResult result;
 
            // Displays the MessageBox.
 
            result = MessageBox.Show(message, caption, buttons);
 
            if (result == System.Windows.Forms.DialogResult.Yes)
            {
                ListViewItem item = listView1.SelectedItems[0];
                string delete = this.Text + "\\" + item.Text;
               if (item.ImageIndex == 1)
               {
                   Directory.Delete(delete,true);
                   
               }
                else  File.Delete(delete);
               
               
            }
 
            GetFiles();
            
        }
 
        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
 
        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
        {
 
        }
    }
}

Ругается на
C#
1
File.Copy(, paste);
Какой у второй аргумент должен быть метода этого? на msdn прочёл что путь, но как тут его поставить, если нужно чтобы выбиралось что копировать, потом через проводник, выбирали папку и только после этого вставить.
Помогите разобраться
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2012, 23:41
Ответы с готовыми решениями:

Дан массив строк: "red", "green", "black", "white", "blue". Запишите в файл элементы массива построчно (в новой строке)
пишу так но не помогает: static void Main(string args) { string...

Если ответ отличается от "да" или "нет" тогда программа должны писать "Ничего не понятно"
Программа работает так как мне нужно (оптимизация не интересует) есть только один момент где...

Описать класс "поезд", содержащий поля "пункт назначения", "номер поезда", "время отправления"
Помогите пожалуйста с классом Описать класс «поезд», содержащий следующие закрытые поля:...

Как сравнивать и копировать значения полей объектов класса "MyClass" с доступом "private"
Добрый день, уважаемые форумчане! Изучаю .NET по книге Г.Шилдта &quot;Полное руководство С#&quot;. В...

1
Эксперт Java
4077 / 3811 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
20.05.2012, 15:42 2
File.Copy непосредственно копирует файл. То что вам надо называется копирование в буфер обмена
http://stackoverflow.com/quest... in-c-sharp
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2012, 15:42

В тексте t между буквами "g" и "b" вставить букву "у"
В тексте t между буквами &quot;g&quot; и &quot;b&quot; словосочетания &quot;gb&quot; вставить букву &quot;у&quot;

Проблема при сравнении: "Оператор ">" не может применяться к операндам типа "Т" и "Т""
Добрый день , пишу сортировку , все делаю на основе Т , но вот в чем проблемма public class...

Построить иерархию классов "Студент", "преподаватель", "персона", "заведующий кафедрой"
Построить иерархию классов: Студент, преподаватель, персона, заведующий кафедрой 1) Разработать...

Методом вычислить тип треугольника: "не существует", "тупоугольный", "прямоугольный", "остроугольный"
Помогите пожалуйста С помощью метода вычислить тип треугольника::cry: 1) если первый параметр...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.