📄 explorerdlg.cs
字号:
}
}
protected void OnClickDisconnect (object sender, System.EventArgs e)
{
if ( m_bConnectedFlag == true ) {
this.Cursor = Cursors.WaitCursor;
if (m_FTPClient.Disconnect() == 0) {
this.Cursor = Cursors.Arrow;
MessageBox.Show(m_FTPClient.GetLastError(),"FTP Explorer - Error",MessageBox.IconStop);
return;
}
m_tvFolderView.Nodes.Clear();
m_lvFileView.Clear();
ToggleMenuItems(0);
this.Cursor = Cursors.Arrow;
m_bConnectedFlag = false;
/* Enable all MRU list */
EnableMRUList(true);
}
InitControls();
}
private void EnableMRUList(bool l_bFlag){
if ( m_iMRUCount == 1 ) {
m_menuMRU1.Enabled = l_bFlag;
}
else if ( m_iMRUCount == 2 ) {
m_menuMRU1.Enabled = l_bFlag;
m_menuMRU2.Enabled = l_bFlag;
}
else if ( m_iMRUCount == 3 ) {
m_menuMRU1.Enabled = l_bFlag;
m_menuMRU2.Enabled = l_bFlag;
m_menuMRU3.Enabled = l_bFlag;
}
else if ( m_iMRUCount == 4 ) {
m_menuMRU1.Enabled = l_bFlag;
m_menuMRU2.Enabled = l_bFlag;
m_menuMRU3.Enabled = l_bFlag;
m_menuMRU4.Enabled = l_bFlag;
}
}
/* Connects to FTP Server */
protected void OnClickConnect (object sender, System.EventArgs e)
{
ConnectDlg dlg = new ConnectDlg(m_strFTPAddress,m_strFTPUser,"");
dlg.ShowDialog();
if ( dlg.m_iDataFlag == 1 ) {
/* If OK is pressed then connect to FTP server */
this.Cursor = Cursors.WaitCursor;
m_strFTPAddress = dlg.m_strFTPServer;
m_strFTPUser = dlg.m_strFTPUserID;
m_strFTPPassword = dlg.m_strFTPPassword;
m_labelTreeView.Text = "No Folders to display";
m_labelTreeView.Refresh();
statusBarPanel1.Text = "Connecting to " + m_strFTPAddress + ". Please wait...";
m_statusBar.Refresh();
int l_iRetval = m_FTPClient.Connect(m_strFTPAddress,m_strFTPUser,m_strFTPPassword);
if ( l_iRetval == 0 ){
string l_strError = m_FTPClient.GetLastError();
this.Cursor = Cursors.Arrow;
MessageBox.Show(l_strError,"FTP Explorer - Error",MessageBox.IconStop);
m_bConnectedFlag = false;
ToggleMenuItems(0);
m_labelTreeView.Text = "Not connected";
m_labelListView.Text = "";
statusBarPanel1.Text = "";
statusBarPanel2.Text = "";
return ;
}
m_bConnectedFlag = true;
ToggleMenuItems(1);
statusBarPanel1.Text = "Connected to " + m_strFTPAddress;
m_statusBar.Refresh();
RefreshFolderView("ROOT","",m_tnRootNode);
string l_strFile = m_FTPClient.m_strList;
m_FTPClient.m_strList = "";
this.Cursor = Cursors.Arrow;
/* Add to MRU List */
AddToMRUList(m_strFTPAddress,m_strFTPUser);
/* Disable MRU List */
EnableMRUList(false);
}
return;
}
/* Add the current menu item to Most Recent Used List */
private void AddToMRUList(string l_strFTPServer,string l_strFTPUser){
/* If the element is already existing
* do not add to the list
* */
foreach(object obj in m_arrMRUConn ) {
MRUConnections l_conn = (MRUConnections) obj;
if (l_conn.FTPServer.Equals(l_strFTPServer) && l_conn.FTPUser.Equals(l_strFTPUser) ) {
/* do not add and skip the rest */
return;
}
}
if ( m_iMRUCount <= 3 ) {
m_arrMRUConn[m_iMRUCount].FTPServer = l_strFTPServer;
m_arrMRUConn[m_iMRUCount].FTPUser = l_strFTPUser;
if ( m_iMRUCount == 0 ) {
m_menuMRU1.Text = l_strFTPServer + "," + l_strFTPUser;
m_menuMRU1.Visible = true;
m_menuMRU1.Enabled = false;
}
if ( m_iMRUCount == 1 ) {
m_menuMRU2.Text = l_strFTPServer + "," + l_strFTPUser;
m_menuMRU2.Visible = true;
m_menuMRU2.Enabled = false;
}
if ( m_iMRUCount == 2 ) {
m_menuMRU3.Text = l_strFTPServer + "," + l_strFTPUser;
m_menuMRU3.Visible = true;
m_menuMRU3.Enabled = false;
}
if ( m_iMRUCount == 3 ) {
m_menuMRU4.Text = l_strFTPServer + "," + l_strFTPUser;
m_menuMRU4.Visible = true;
m_menuMRU4.Enabled = false;
}
m_menuMRUSep.Visible = true;
m_iMRUCount++;
/* Reset back to 0, so that the next item can be added */
if ( m_iMRUCount == 4 ) {
m_iMRUCount = 0;
}
}
return;
}
/* Calls LIST command and Populates Treeview and Listview control */
private int RefreshFolderView(string l_strFullPath,string l_strCurDir,TreeNode l_tnCurNode){
statusBarPanel2.Text = "Retreiving Folders and Files. Please wait...";
m_statusBar.Refresh();
string l_strTemp = "";
/* If ROOT is passed then get the Root directory */
if ( l_strFullPath.Equals("ROOT" ) ) {
l_strTemp = m_FTPClient.GetRootDirectory();
}
else {
l_strTemp = l_strFullPath;
}
/* Change to corresponding directory */
int l_iRetval = m_FTPClient.ChangeWorkingDirectory(l_strTemp);
if (l_iRetval == 0 ) {
statusBarPanel1.Text = "Connected to " + m_strFTPAddress;
statusBarPanel2.Text = "No files or directory found";
string l_strErr = m_FTPClient.GetLastError();
MessageBox.Show(l_strErr,"FTP Explorer",MessageBox.IconError);
return l_iRetval;
}
/* Get the file list in the current directory */
int l_iFileCount = m_FTPClient.GetList();
if (l_iFileCount == 0 ) {
string l_strError = "No files or directory found or Connection lost. Please try again.";
statusBarPanel1.Text = "Connected to " + m_strFTPAddress;
statusBarPanel2.Text = "No files or directory found";
MessageBox.Show(l_strError,"FTP Explorer",MessageBox.IconError);
return l_iRetval;
}
statusBarPanel2.Text = "Refresing Folder and File views with data";
FileList l_FileListObj = m_FTPClient.GetFileList();
/* Populate TreeView Control */
PopulateTreeListView(l_FileListObj,l_strFullPath,l_tnCurNode);
if ( l_strFullPath.Equals("ROOT") ) {
statusBarPanel3.Text = m_FTPClient.GetCurrentWorkingDirectory();
}
else {
statusBarPanel3.Text = l_strFullPath;
}
m_labelTreeView.Text = l_strTemp; /* Display current directory */
statusBarPanel3.Text = m_strLocalDirectory;
statusBarPanel1.Text = "Connected to " + m_strFTPAddress;
statusBarPanel2.Text = "Logged in as " + m_strFTPUser ;
return 1;
}
/*
* Function that populates Folder and File views
*/
private void PopulateTreeListView(FileList l_FileListObj,string l_strRootFlag,TreeNode l_tnNode){
TreeNode l_tnCurrNode ;
InitListControl();
long l_lTotalSize = 0;
m_lvFileView.Refresh();
if ( l_strRootFlag.Equals("ROOT" ) ) {
m_tvFolderView.Nodes.Clear();
m_tnRootNode = new TreeNode(m_FTPClient.GetRootDirectory(),0,0);
m_tvFolderView.Nodes.Add(m_tnRootNode);
l_tnCurrNode = m_tnRootNode;
}
else {
l_tnCurrNode = l_tnNode;
}
TreeNodeCollection l_tcFolderCollection = l_tnCurrNode.Nodes;
FileInfo l_FileInfo = null;
int l_iNoOfFiles = l_FileListObj.GetCount();
int l_iCount = 0;
string l_strFileName = "",l_strDateCreated = "",l_strTimeCreated = "";
string l_strFilePath = "",l_strFileOwner = "",l_strFileGroup = "";
int l_iFileType = 0,l_iFileSize = 0;
string[] l_strsubItems = new string[3];
int l_iTreeIndex = 0,l_iListIndex = 0;
for ( ; l_iCount < l_iNoOfFiles ; l_iCount++ ) {
l_FileInfo = l_FileListObj.GetFileInfo(l_iCount);
if (l_FileInfo != null ) {
l_FileInfo.GetFileInfo(out l_iFileType,out l_strFileName,out l_strFilePath,out l_strDateCreated,out l_iFileSize,out l_strFileOwner,out l_strFileGroup,out l_strTimeCreated);
if ( l_iFileType == 2 ) {
if ( l_strFileName.Equals(".") || l_strFileName.Equals("..") ) {
/* If current or parent directory, then do not add to treeview
* and skip to next record
*/
continue;
}
/* If folder then add to tree view */
TreeNode l_tnFolderNode = new TreeNode(l_strFileName,1,2);
l_tcFolderCollection.Add(l_iTreeIndex,l_tnFolderNode);
l_iTreeIndex++;
}
else {
/* Add to List view */
l_lTotalSize += l_iFileSize;
l_strsubItems[0] = l_iFileSize.ToString();
l_strsubItems[1] = l_strDateCreated;
switch ( m_FTPClient.GetServerOS()) {
case 0 : /* If unknown */
l_strsubItems[2] = l_strFileOwner;
break;
case 1 : /* If Unix */
l_strsubItems[2] = l_strFileOwner;
break;
case 2 : /* If Windows */
l_strsubItems[2] = l_strTimeCreated;
break;
default :
l_strsubItems[2] = l_strFileOwner;
break;
}
ListItem l_liFileData = new ListItem(l_strFileName,0,l_strsubItems);
m_lvFileView.InsertItem(l_iListIndex,l_liFileData);
l_iListIndex++;
}
}
}
string l_strStatusMessage = "";
l_strStatusMessage = "Folder(s) : " + l_iTreeIndex + ", File(s) : " + l_iListIndex + ", Total Size : " + l_lTotalSize.ToString();
m_labelListView.Text = l_strStatusMessage;
return;
}
private void InitListControl(){
m_lvFileView.Clear();
m_lvFileView.InsertColumn(0,"Name",150,HorizontalAlignment.Left );
m_lvFileView.InsertColumn(1,"Size",70,HorizontalAlignment.Right );
m_lvFileView.InsertColumn(2,"Created",100,HorizontalAlignment.Left );
switch ( m_FTPClient.GetServerOS()) {
case 0 : /* If unknown */
m_lvFileView.InsertColumn(3,"Owner",100,HorizontalAlignment.Left );
break;
case 1 : /* If unix */
m_lvFileView.InsertColumn(3,"Owner",100,HorizontalAlignment.Left );
break;
case 2 : /* If Windows */
m_lvFileView.InsertColumn(3,"Time",100,HorizontalAlignment.Left );
break;
default :
m_lvFileView.InsertColumn(3,"Owner",100,HorizontalAlignment.Left );
break;
}
return ;
}
private void ToggleMenuItems(int l_iConnFlag){
/* If connected */
if ( l_iConnFlag == 1 ) {
menuItem2.Enabled = false;
menuItem3.Enabled = true;
menuItem5.Enabled = true;
menuItem11.Enabled = true;
menuItem15.Enabled = true;
toolBarButton1.Enabled = false;
toolBarButton2.Enabled = true;
toolBarButton3.Enabled = true;
toolBarButton4.Enabled = true;
toolBarButton11.Enabled = true;
}
else {
menuItem2.Enabled = true;
menuItem3.Enabled = false;
menuItem5.Enabled = false;
menuItem11.Enabled = false;
menuItem15.Enabled = false;
toolBarButton1.Enabled = true;
toolBarButton2.Enabled = false;
toolBarButton3.Enabled = false;
toolBarButton4.Enabled = false;
toolBarButton11.Enabled = false;
}
return ;
}
/* Set Message to status bar */
public void SetStausMessage(string l_strMessage2){
if ( l_strMessage2 != null ) {
statusBarPanel2.Text = l_strMessage2;
}
m_statusBar.Refresh();
}
/// <summary>
/// The main entry point for the application.
/// </summary>
public static void Main(string[] args)
{
Application.Run(new ExplorerDlg());
}
}
class MRUConnections {
private string m_strFTPServer;
private string m_strUserID;
public MRUConnections(){
m_strFTPServer = "";
m_strUserID = "";
}
public string FTPServer {
get {
return m_strFTPServer;
}
set {
m_strFTPServer = value;
}
}
public string FTPUser {
get {
return m_strUserID;
}
set {
m_strUserID = value;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -