📄 ftpform.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.IO;
namespace FTP
{
public partial class FtpForm : Form
{
private WebConfig wc;
private clsFTP ftp;
private ListViewItem lvItem;
private ColumnHeader column;
private System.Collections.Specialized.StringCollection folder=new System.Collections.Specialized.StringCollection();
public FtpForm()
{
InitializeComponent();
}
private void tsConfig_Click(object sender, EventArgs e)
{
if (wc == null)
{
wc = new WebConfig();
if (wc.ShowDialog() == DialogResult.OK)
{
ftp = new clsFTP(new Uri(wc.tbAddress.Text), wc.tbUser.Text, wc.tbPassword.Text);
folder.Add(ftp.Uri.ToString());
Thread thread = new Thread(new ThreadStart(FilllvRemote));
thread.Start();
this.tsStatus.Text = ftp.Uri.ToString();
this.tsDirectory.Text = ftp.Uri.ToString();
}
}
}
private void FilllvRemote()
{
this.lvRemoteFiles.Items.Clear();
FileStruct[] files = ftp.ListFilesAndDirectories();
ListViewItem.ListViewSubItem lvSub;
foreach (FileStruct file in files)
{
lvItem = new ListViewItem(file.Name.ToString());
lvSub = new ListViewItem.ListViewSubItem();
lvSub.Text = file.Owner.ToString();
lvItem.SubItems.Add(lvSub);
lvSub = new ListViewItem.ListViewSubItem();
lvSub.Text = file.Flags.ToString();
lvItem.SubItems.Add(lvSub);
lvSub = new ListViewItem.ListViewSubItem();
lvSub.Text = file.CreateTime.ToString();
lvItem.SubItems.Add(lvSub);
this.lvRemoteFiles.Items.Add(lvItem);
}
}
private void FtpForm_Load(object sender, EventArgs e)
{
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
this.lvLocalFiles.View = View.List;
this.lvRemoteFiles.View = View.Details;
AddColumn();
DriveInfo[] drive = DriveInfo.GetDrives();
foreach (DriveInfo dr in drive)
{
this.cbLocalDrives.Items.Add(dr.Name.ToString());
this.cbLocalDrives.Text = drive[0].Name.ToString();
}
Thread thread = new Thread(new ThreadStart(FilllvLocal));
thread.Start();
}
private void FilllvLocal()
{
string[] dirs = Directory.GetDirectories(this.cbLocalDrives.Text);
string[] files = Directory.GetFiles(this.cbLocalDrives.Text);
List<string> list = new List<string>();
list.AddRange(dirs);
list.AddRange(files);
foreach (string s in list.ToArray())
{
this.lvLocalFiles.Items.Add(new ListViewItem(s));
}
}
private void cbLocalDrives_SelectionChangeCommitted(object sender, EventArgs e)
{
this.lvLocalFiles.Items.Clear();
Thread thread = new Thread(new ThreadStart(FilllvLocal));
thread.Start();
}
private void AddColumn()
{
column = new ColumnHeader();
column.Text = "文件名";
column.Width = 150;
this.lvRemoteFiles.Columns.Add(column);
column = new ColumnHeader();
column.Text = "权限";
column.Width = 50;
this.lvRemoteFiles.Columns.Add(column);
column = new ColumnHeader();
column.Text = "类型";
column.Width = 80;
this.lvRemoteFiles.Columns.Add(column);
column = new ColumnHeader();
column.Text = "创建时间";
column.Width = 100;
this.lvRemoteFiles.Columns.Add(column);
}
private void tsOpen_Click(object sender, EventArgs e)
{
string str = this.lvRemoteFiles.SelectedItems[0].Text;
ftp.GotoDirectory(str);
folder.Add(ftp.Uri.ToString());
this.tsDirectory.Text = ftp.Uri.ToString();
Thread thread = new Thread(new ThreadStart(FilllvRemote));
thread.Start();
}
private void tsBack_Click(object sender, EventArgs e)
{
if (folder.Count > 1)
{
folder.RemoveAt(folder.Count - 1);
ftp.Uri = new Uri(folder[folder.Count - 1].ToString());
}
this.tsDirectory.Text = ftp.Uri.ToString();
Thread thread = new Thread(new ThreadStart(FilllvRemote));
thread.Start();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -