📄 mainmenu.cs
字号:
namespace FTP.View.VisibleControls
{
using System;
using System.IO;
using System.Windows.Forms;
using System.Drawing;
using System.Diagnostics;
using System.Threading;
using FTP.View.DataStructures;
using FTP.Model.DataStructures;
internal class MainMenu : System.Windows.Forms.MainMenu
{
private HandleUserGestures handleUserGestures; // Pointer to parent's HandleUserGestures
private System.Windows.Forms.View listViewStyle = System.Windows.Forms.View.Details;
private bool connected = false;
private MenuItem mtFile;
private MenuItem miConnect;
private MenuItem miDisconnect;
private MenuItem miDownloadTo;
private MenuItem miUploadFrom;
private MenuItem miCreateDirectory;
private MenuItem miRemoveDirectory;
private MenuItem miDelete;
private MenuItem miExit;
private MenuItem mtView;
private MenuItem miLargeIcons;
private MenuItem miSmallIcons;
private MenuItem miList;
private MenuItem miDetails;
private MenuItem mtHelp;
private MenuItem miAbout;
private MenuItem miSeparator1;
private MenuItem miSeparator2;
private MenuItem miSeparator3;
private MenuItem miSeparator4;
private MenuItem miSeparator5;
internal MainMenu(HandleUserGestures pHandleUserGestures)
{
this.handleUserGestures = pHandleUserGestures;
// Add top level menu items
mtFile = new MenuItem("&File");
mtView = new MenuItem("&View");
mtHelp = new MenuItem("&Help");
this.MenuItems.Add(mtFile);
this.MenuItems.Add(mtView);
this.MenuItems.Add(mtHelp);
mtFile.Select += new System.EventHandler (this.eventMenuSelectionEventHandler);
mtView.Select += new System.EventHandler (this.eventMenuSelectionEventHandler);
miSeparator1 = new MenuItem("-");
miSeparator2 = new MenuItem("-");
miSeparator3 = new MenuItem("-");
miSeparator4 = new MenuItem("-");
miSeparator5 = new MenuItem("-");
miConnect = new MenuItem("Connect...", new EventHandler(this.eventMenuEventHandler), Shortcut.CtrlN);
miDisconnect = new MenuItem("Diconnect", new EventHandler(this.eventMenuEventHandler), Shortcut.CtrlZ);
miDownloadTo = new MenuItem("Download To...", new EventHandler(this.eventMenuEventHandler));
miUploadFrom = new MenuItem("Upload From...", new EventHandler(this.eventMenuEventHandler));
miCreateDirectory = new MenuItem("New Directory", new EventHandler(this.eventMenuEventHandler));
miRemoveDirectory = new MenuItem("Remove Directory", new EventHandler(this.eventMenuEventHandler));
miDelete = new MenuItem("Delete", new EventHandler(this.eventMenuEventHandler));
miLargeIcons = new MenuItem("Large Icons", new EventHandler(this.eventMenuEventHandler));
miSmallIcons = new MenuItem("Small Icons", new EventHandler(this.eventMenuEventHandler));
miList = new MenuItem("List", new EventHandler(this.eventMenuEventHandler));
miDetails = new MenuItem("Details", new EventHandler(this.eventMenuEventHandler));
miExit = new MenuItem("E&xit", new EventHandler(this.eventMenuEventHandler));
miAbout = new MenuItem("About", new EventHandler(this.eventMenuEventHandler));
mtFile.MenuItems.Add(miConnect);
mtFile.MenuItems.Add(miDisconnect);
mtFile.MenuItems.Add(miSeparator1);
mtFile.MenuItems.Add(miDownloadTo);
mtFile.MenuItems.Add(miUploadFrom);
mtFile.MenuItems.Add(miSeparator2);
mtFile.MenuItems.Add(miCreateDirectory);
mtFile.MenuItems.Add(miRemoveDirectory);
mtFile.MenuItems.Add(miDelete);
mtFile.MenuItems.Add(miSeparator3);
mtFile.MenuItems.Add(miExit);
mtView.MenuItems.Add(miLargeIcons);
mtView.MenuItems.Add(miSmallIcons);
mtView.MenuItems.Add(miList);
mtView.MenuItems.Add(miDetails);
mtHelp.MenuItems.Add(miAbout);
}
private void eventMenuSelectionEventHandler(object pSender, EventArgs pArgs)
{
MenuItem clickedMenu = (MenuItem)pSender;
if (clickedMenu == mtView)
{
miLargeIcons.Checked = (this.listViewStyle == View.LargeIcon);
miSmallIcons.Checked = (this.listViewStyle == View.SmallIcon);
miList.Checked = (this.listViewStyle == View.List);
miDetails.Checked = (this.listViewStyle == View.Details);
}
if (clickedMenu == mtFile)
{
miConnect.Enabled = !this.connected;
miDisconnect.Enabled = this.connected;
miDownloadTo.Enabled = this.connected;
miUploadFrom.Enabled = this.connected;
miCreateDirectory.Enabled = this.connected;
miRemoveDirectory.Enabled = this.connected;
miRemoveDirectory.Visible = false; //xyzzy
miDelete.Enabled = this.connected;
}
}
private void eventMenuEventHandler(object pSender, EventArgs pArgs)
{
MenuItem clickedMenu = (MenuItem)pSender;
string messageToView = "";
if (clickedMenu == miConnect)
messageToView = "CONNECT";
if (clickedMenu == miDisconnect)
messageToView = "DICONNECT";
if (clickedMenu == miExit)
messageToView = "EXIT";
// View Menu
if (clickedMenu == miLargeIcons)
{
this.listViewStyle = System.Windows.Forms.View.LargeIcon;
messageToView = "REFRESH";
}
if (clickedMenu == miSmallIcons)
{
this.listViewStyle = System.Windows.Forms.View.SmallIcon;
messageToView = "REFRESH";
}
if (clickedMenu == miList)
{
this.listViewStyle = System.Windows.Forms.View.List;
messageToView = "REFRESH";
}
if (clickedMenu == miDetails)
{
this.listViewStyle = System.Windows.Forms.View.Details;
messageToView = "REFRESH";
}
// File Menu
if (clickedMenu == miDownloadTo)
messageToView = "DOWNLOADTO";
if (clickedMenu == miUploadFrom)
messageToView = "UPLOADFROM";
if (clickedMenu == miCreateDirectory)
messageToView = "CREATEDIRECTORY";
if (clickedMenu == miRemoveDirectory)
messageToView = "REMOVEDIRECTORY";
if (clickedMenu == miDelete)
messageToView = "DELETE";
// Event for About Box
if (clickedMenu == miAbout)
MessageBox.Show("By Paul Lockwood (paul_lockwood@yahoo.com).", "C# Example Code",
MessageBoxButtons.OK, MessageBoxIcon.Information);
if (messageToView.Length>0)
{
handleUserGestures.handleUserGesture(messageToView);
}
}
public void ExtractUserChanges(ref ModelViewState pFtpViewState)
{
pFtpViewState.ListViewStyle = this.listViewStyle;
}
public void AcceptModelChanges(ModelViewState ftpViewState)
{
this.connected = ftpViewState.connected ;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -