📄 ftpexplorerdlg.cs
字号:
/* Now Remove Folder from FTP Server */
if ( m_FtpClient.RemoveFolder(l_strFolder) == 0 ) {
this.Cursor = Cursors.Arrow;
string l_strError = m_FtpClient.ErrorMessage;
MessageBox.Show(l_strError,"FTP Explorer",MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
this.Cursor = Cursors.WaitCursor;
/* Refresh File views for the Parent folder */
string l_strParentDir = l_tnParentNode.Text;
m_tVFolders.SelectedNode = l_tnParentNode;
/* Clear all child nodes *
l_tnParentNode.Nodes.Clear();
RefreshFolderView(l_strParentFolder,l_strParentDir,l_tnParentNode);
*/
this.Cursor = Cursors.Arrow;
return;
}
private void OnClickOptionsRefresh(object sender, System.EventArgs e) {
Cursor = Cursors.WaitCursor;
DataTable l_dtFileList = m_FtpClient.GetList(null);
if ( l_dtFileList != null && l_dtFileList.Rows.Count > 0 ){
/* Clear the root node */
m_tVFolders.Nodes.Clear();
m_tnRootNode = new TreeNode(m_FtpClient.RootDirectory,0,0);
m_tVFolders.Nodes.Add(m_tnRootNode);
PopulateFolders(m_tnRootNode,l_dtFileList);
PopulateFiles(l_dtFileList);
}
else {
Cursor = Cursors.Arrow;
MessageBox.Show("No folders or files found");
return;
}
Cursor = Cursors.Arrow;
}
private void OnClickOptionsUploadFile(object sender, System.EventArgs e) {
OpenFileDialog l_openFileDialog = new OpenFileDialog();
l_openFileDialog.CheckFileExists = true;
l_openFileDialog.InitialDirectory = "C:\\";
l_openFileDialog.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
l_openFileDialog.Title = "Select file to upload";
if ( l_openFileDialog.ShowDialog() == DialogResult.OK ){
string l_strLocalFileFullName = l_openFileDialog.FileName;
int l_iLen = l_strLocalFileFullName.Length;
int l_iCtr = l_iLen;
for ( l_iCtr-- ; l_iCtr > 0 ; l_iCtr-- ){
char ch = l_strLocalFileFullName[l_iCtr];
if ( ch == '\\' ){
break;
}
}
string l_strLocalFileName = l_strLocalFileFullName.Substring(l_iCtr+1);
l_strLocalFileName.Trim();
if ( l_strLocalFileName.Length == 0 ){
MessageBox.Show("Select a valid file and click upload option","FTP Explorer - Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
SetStatusMessage("Uploading file. Please wait...","NONE","NONE");
Cursor = Cursors.WaitCursor;
string l_strRemoteFile = m_FtpClient.CurrentDirectory + "/" + l_strLocalFileName;
int l_iRetval = m_FtpClient.UploadFile(l_strLocalFileFullName,l_strRemoteFile);
Cursor = Cursors.Arrow;
if ( l_iRetval == 0 ){
MessageBox.Show(m_FtpClient.ErrorMessage,"FTP Explorer - Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
else {
try {
DataView l_dvFile = (DataView) m_dGFiles.DataSource;
DataTable l_dtFileList = l_dvFile.Table;
DataRow l_drNewRow = l_dtFileList.NewRow();
if ( m_FtpClient.ServerOS == 1 ){
/* Unix */
l_drNewRow[0] = l_strLocalFileName;
l_drNewRow[1] = DateTime.Today.ToShortDateString();
l_drNewRow[2] = l_iRetval+1;
l_drNewRow[3] = "unknown";
l_drNewRow[4] = "unknown";
}
else if (m_FtpClient.ServerOS == 2) {
/* Windows */
l_drNewRow[0] = l_strLocalFileName;
l_drNewRow[1] = DateTime.Today.ToShortDateString();
l_drNewRow[2] = l_iRetval+1;
}
m_iFileCount++;
l_dtFileList.Rows.Add(l_drNewRow);
m_dGFiles.DataSource = l_dtFileList.DefaultView;
}
catch ( Exception e1){
}
}
string l_strTemp = "Connected to " + m_FTPProperties.UserID + "@" + m_FTPProperties.FTPServer;
SetStatusMessage(l_strTemp,"LIST","NONE");
}
return;
}
private void OnClickOptionsDownloadFile(object sender, System.EventArgs e) {
if ( m_dGFiles.Focused == false ){
MessageBox.Show("Select the entire row click download option","FTP Explorer - Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
int l_iCurrRow = m_dGFiles.CurrentRowIndex;
string l_strFileName = (string) m_dGFiles[l_iCurrRow,0];
l_strFileName.Trim();
if ( l_strFileName.Length == 0 ){
MessageBox.Show("Select a valid file and click download option","FTP Explorer - Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
SetStatusMessage("Downloading file. Please wait...","NONE","NONE");
Cursor = Cursors.WaitCursor;
string l_strLocalFile = m_strLocalFolder + "\\" + l_strFileName;
int l_iRetval = m_FtpClient.DownLoadFile(l_strFileName,l_strLocalFile);
Cursor = Cursors.Arrow;
if ( l_iRetval == 0 ){
MessageBox.Show(m_FtpClient.ErrorMessage,"FTP Explorer - Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
string l_strTemp = "Connected to " + m_FTPProperties.UserID + "@" + m_FTPProperties.FTPServer;
SetStatusMessage(l_strTemp,"LIST","NONE");
return;
}
private void OnClickOptionsDeleteFile(object sender, System.EventArgs e) {
DataGridCell l_dgcCurrent = m_dGFiles.CurrentCell;
int l_iCurrentRow = m_dGFiles.CurrentCell.RowNumber;
string l_strFileName = (string) m_dGFiles[l_dgcCurrent];
l_strFileName.Trim();
if ( l_strFileName.Length == 0 ){
MessageBox.Show("Select a valid file and click delete option","FTP Explorer - Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
int l_iRetval = m_FtpClient.RemoveFile(l_strFileName);
if ( l_iRetval == 1 ){
try {
m_iFileCount--;
DataView l_dvFile = (DataView) m_dGFiles.DataSource;
DataTable l_dtFileList = l_dvFile.Table;
l_dtFileList.Rows.RemoveAt(l_iCurrentRow);
m_dGFiles.DataSource = l_dtFileList.DefaultView;
SetStatusMessage("NONE","LIST","NONE");
}
catch ( Exception e1){
}
}
}
private void OnClickOptionsSetLWD(object sender, System.EventArgs e) {
FTPLocalFolderDlg localFolderdlg = new FTPLocalFolderDlg(m_strLocalFolder);
if ( localFolderdlg.ShowDialog() == DialogResult.OK){
m_strLocalFolder = localFolderdlg.LocalFolder;
}
SetStatusMessage("NONE","NONE",m_strLocalFolder);
}
private void OnClickClose(object sender, System.EventArgs e) {
Close();
}
private void PopulateFolders(TreeNode l_tnCurrNode,DataTable l_dtFileList){
int l_iFileType = 0;
int l_iFolderCtr = 0;
string l_strFileName = "";
TreeNodeCollection l_tnCollection = l_tnCurrNode.Nodes;
foreach(object obj in l_dtFileList.Rows){
DataRow l_drRow = (DataRow) obj;
l_iFileType = (int) l_drRow[0];
l_strFileName = (string) l_drRow[1];
/* Add only folders */
if ( l_iFileType == 2 ){
l_tnCollection.Add(new TreeNode(l_strFileName,1,2));
l_iFolderCtr++;
}
}
m_iFolderCount = l_iFolderCtr;
SetStatusMessage("NONE","LIST","NONE");
m_tVFolders.ExpandAll();
}
private void PopulateFiles(DataTable l_dtFileList){
try {
int l_iFileType = 0;
int l_iFileCtr = 0;
DataTable l_dtFiles = new DataTable("FileList");
if ( m_FtpClient.ServerOS == 1 ){
DataColumn l_dc1 = new DataColumn("File Name",typeof(string));
DataColumn l_dc2 = new DataColumn("Created Date",typeof(string));
DataColumn l_dc3 = new DataColumn("File Size",typeof(int));
DataColumn l_dc4 = new DataColumn("File Owner",typeof(string));
DataColumn l_dc5 = new DataColumn("File Group",typeof(string));
l_dtFiles.Columns.Add(l_dc1);
l_dtFiles.Columns.Add(l_dc2);
l_dtFiles.Columns.Add(l_dc3);
l_dtFiles.Columns.Add(l_dc4);
l_dtFiles.Columns.Add(l_dc5);
}
else if (m_FtpClient.ServerOS == 2) {
DataColumn l_dc1 = new DataColumn("File Name",typeof(string));
DataColumn l_dc2 = new DataColumn("Created Date",typeof(string));
DataColumn l_dc3 = new DataColumn("File Size",typeof(int));
l_dtFiles.Columns.Add(l_dc1);
l_dtFiles.Columns.Add(l_dc2);
l_dtFiles.Columns.Add(l_dc3);
}
foreach(DataRow l_drRow in l_dtFileList.Rows){
l_iFileType = (int) l_drRow[0];
/* Add only files */
if ( l_iFileType == 1 ){
DataRow l_newRow = l_dtFiles.NewRow();
if ( m_FtpClient.ServerOS == 1 ){
/* Unix */
l_newRow[0] = l_drRow[1];
l_newRow[1] = l_drRow[3];
l_newRow[2] = l_drRow[4];
l_newRow[3] = l_drRow[5];
l_newRow[4] = l_drRow[6];
}
else if (m_FtpClient.ServerOS == 2) {
/* Windows */
l_newRow[0] = l_drRow[1];
l_newRow[1] = l_drRow[3];
l_newRow[2] = l_drRow[4];
}
l_dtFiles.Rows.Add(l_newRow);
l_iFileCtr++;
}
}
m_dGFiles.DataSource = l_dtFiles.DefaultView;
m_iFileCount = l_iFileCtr;
SetStatusMessage("NONE","LIST","NONE");
}
catch ( Exception e){
return ;
}
}
private void OnAfterSelectFolderView(object sender, System.Windows.Forms.TreeViewEventArgs e) {
try {
if ( m_bNewNodeFlag == true ){
m_bNewNodeFlag = false;
return;
}
this.Cursor = Cursors.WaitCursor;
/* Clear the File view contents */
m_dGFiles.DataBindings.Clear();
TreeNode l_tempNode = e.Node;
if ( l_tempNode == m_tnRootNode ) {
/* If root node is clicked do not do anything */
this.Cursor = Cursors.Arrow;
return ;
}
/* Clear all child nodes first */
TreeNodeCollection l_tnCollection = l_tempNode.Nodes;
if ( l_tnCollection != null ){
l_tnCollection.Clear();
}
/* Populate Folder view */
string l_strCurDir = l_tempNode.Text;
string l_strFullPath = l_tempNode.FullPath;
l_strFullPath = l_strFullPath.Replace('\\','/');
string l_strTemp = m_FTPProperties.UserID + "@" + m_FTPProperties.FTPServer;
SetStatusMessage("Connected to " + l_strTemp,"Listing foldes and files. Please wait...","NONE");
/* Change to corresponding directory */
int l_iRetval = m_FtpClient.ChangeWorkingFolder(l_strFullPath);
if (l_iRetval == 0 ) {
string l_strErr = m_FtpClient.ErrorMessage;
this.Cursor = Cursors.Arrow;
MessageBox.Show(l_strErr,"FTP Explorer - Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
return ;
}
/* Get the file contents */
DataTable l_dtFileList = m_FtpClient.GetList(l_strFullPath);
if ( l_dtFileList != null ){
PopulateFolders(l_tempNode,l_dtFileList);
PopulateFiles(l_dtFileList);
}
this.Cursor = Cursors.Arrow;
return;
}
catch ( Exception e1){
this.Cursor = Cursors.Arrow;
MessageBox.Show(e1.Message,"FTP Explorer - Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
private void OnFormClosing(object sender, System.ComponentModel.CancelEventArgs e) {
if ( m_FtpClient != null ){
m_FtpClient.Disconnect();
}
m_tVFolders.Nodes.Clear();
m_dGFiles.DataBindings.Clear();
EnableToolBarButtons(false);
}
private void EnableToolBarButtons(bool l_bStatus){
toolBarButton1.Enabled = !l_bStatus;
toolBarButton2.Enabled = l_bStatus;
toolBarButton5.Enabled = l_bStatus;
toolBarButton6.Enabled = l_bStatus;
toolBarButton8.Enabled = l_bStatus;
toolBarButton9.Enabled = l_bStatus;
toolBarButton10.Enabled = l_bStatus;
toolBarButton12.Enabled = l_bStatus;
toolBarButton14.Enabled = l_bStatus;
}
private void SetStatusMessage(string l_strMessage1,string l_strMessage2,string l_strMessage3){
if ( l_strMessage1.Equals("NONE") == false ){
statusBarPanel1.Text = l_strMessage1;
}
if ( l_strMessage2.Equals("LIST") == true ){
string l_strText = "Folder(s) :" + m_iFolderCount + ", File(s) :" + m_iFileCount;
statusBarPanel2.Text = l_strText;
}
else if ( l_strMessage2.Equals("NONE") == false ){
statusBarPanel2.Text = l_strMessage2;
}
if ( l_strMessage3.Equals("NONE") == false ){
statusBarPanel3.Text = l_strMessage3;
}
m_sbStatus.Refresh();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -