📄 iismainwindow.cs
字号:
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// Override the window load to display the available sites in IIs
/// </summary>
/// <param name="e"></param>
protected override void OnLoad(EventArgs e)
{
base.OnLoad (e);
this.RefreshSites(false);
}
/// <summary>
/// Refreshes the site list when focus is regained
/// </summary>
protected override void OnActivated(EventArgs e)
{
this.RefreshSites(true);
base.OnActivated (e);
}
protected override void OnClosing(CancelEventArgs e)
{
_notifyIcon.Visible = false;
base.OnClosing (e);
}
/// <summary>
/// Unchecks all other items, enforcing the rule that only one item will ever be checked at a time
/// </summary>
/// <param name="checkedItem"></param>
private void UncheckAllOtherItems(IIsWebSiteListViewItem checkedItem)
{
foreach (IIsWebSiteListViewItem item in _listView.Items)
{
if (item != checkedItem && item.Checked)
{
item.Checked = false;
}
}
}
private void RefreshSites(bool refreshSites)
{
this.RefreshSites(refreshSites, false, 0);
}
/// <summary>
/// Refreshes the list of IIs web sites
/// </summary>
private void RefreshSites(bool refreshSites, bool selectSite, int siteIndex)
{
try
{
_listView.BeginUpdate();
_listView.Items.Clear();
this.ResetStatusBar();
if (refreshSites)
{
_iisAdministrator.RefreshWebSites();
}
IIsWebSiteListViewItem[] items = new IIsWebSiteListViewItem[_iisAdministrator.WebSites.Count];
for (int i = 0; i < items.Length; i++)
{
items[i] = new IIsWebSiteListViewItem(_iisAdministrator.WebSites[i]);
}
_listView.Items.AddRange(items);
this.DisplayStartedSiteInStatusBar(_iisAdministrator.WebSites.ActiveWebSite);
this.DisplayWebSiteCount(_iisAdministrator.WebSites.Count);
}
catch(Exception ex)
{
Debug.WriteLine(ex);
}
finally
{
_listView.EndUpdate();
if (selectSite)
{
foreach (IIsWebSiteListViewItem item in _listView.Items)
{
if (item.WebSite.Index == siteIndex)
{
_listView.Focus();
item.Selected = true;
break;
}
}
}
}
}
/// <summary>
/// Resets the status bar text
/// </summary>
private void ResetStatusBar()
{
_statusBar.Panels[0].Text = null;
_statusBar.Panels[1].Text = null;
}
/// <summary>
/// Displays the total number of created web sites
/// </summary>
/// <param name="count"></param>
private void DisplayWebSiteCount(int count)
{
_statusBar.Panels[0].Text = string.Format("{0} web sites", count);
}
/// <summary>
/// Displays the active (Started) web site in the status bar
/// </summary>
/// <param name="site"></param>
private void DisplayStartedSiteInStatusBar(IIsWebSite site)
{
if (site != null)
{
_statusBar.Panels[1].Text = string.Format("Active Site: {0}", site.Name);
}
else
{
_statusBar.Panels[1].Text = "Active Site: None";
}
}
/// <summary>
/// Occurs when a web site is started
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void WebSite_Started(object sender, IIsWebSiteEventArgs e)
{
this.RefreshSites(true, true, e.WebSite.Index);
}
/// <summary>
/// Occurs when a web site is stopped
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void WebSite_Stopped(object sender, IIsWebSiteEventArgs e)
{
this.RefreshSites(true);
}
/// <summary>
/// Occurs when the window is resized, handles displaying the program in the taskbar
/// </summary>
private void IIsMainWindow_Resize(object sender, EventArgs e)
{
if(this.WindowState == FormWindowState.Minimized)
{
this.ShowInTaskbar = false;
}
}
/// <summary>
/// Starts a site if it is stopped or vice versa it if it is started when
/// double clicked
/// </summary>
private void ListView_DoubleClick(object sender, EventArgs e)
{
IIsWebSiteListViewItem item = this._listView.SelectedItems[0] as IIsWebSiteListViewItem;
if(item != null)
{
this.ToggleSiteState(item.WebSite);
}
}
/// <summary>
/// Populates the context menu
/// </summary>
private void ContextMenuTray_Popup(object sender, EventArgs e)
{
// Semi-hack, could be selective and only remove the web site menu items,
// but just going to clear them all every time for now
try
{
_contextMenuTray.MenuItems.Clear();
IIsWebSite activeSite = _iisAdministrator.WebSites.ActiveWebSite;
for(int x=0;x<_iisAdministrator.WebSites.Count;x++)
{
IIsWebSiteMenuItem item = new IIsWebSiteMenuItem(_iisAdministrator.WebSites[x], new EventHandler(ContextMenuTrayWebSite_Clicked));
_contextMenuTray.MenuItems.Add(item);
item.Checked = (activeSite != null && item.WebSite.Index == activeSite.Index);
}
_contextMenuTray.MenuItems.Add(new MenuItem("-"));
_contextMenuTray.MenuItems.Add(new MenuItem("Restart IIS", new EventHandler(ContextMenuTrayRestartIIs_Clicked)));
_contextMenuTray.MenuItems.Add(new MenuItem("Open IIS", new EventHandler(ContextMenuTrayOpenIIs_Clicked)));
_contextMenuTray.MenuItems.Add(new MenuItem("Open IIsAdmin.NET", new EventHandler(ContextMenuTrayOpenIIsAdmin_Clicked)));
}
catch(Exception ex)
{
Debug.Write(ex);
}
}
/// <summary>
/// Restarts IIS when clicked in taskbar context menu
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ContextMenuTrayRestartIIs_Clicked(object sender, EventArgs e)
{
this.BeginRestartIIs();
}
/// <summary>
/// Opens IIS when clicked in taskbar context menu
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ContextMenuTrayOpenIIs_Clicked(object sender, EventArgs e)
{
IIsAdministrator.OpenIIsManagementConsole();
}
/// <summary>
/// Restores IIsAdmin.NET when clicked in taskbar context menu
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ContextMenuTrayOpenIIsAdmin_Clicked(object sender, EventArgs e)
{
if(this.WindowState == FormWindowState.Minimized)
{
this.Restore();
}
else
{
this.Focus();
}
}
/// <summary>
/// Handles when a site is clicked in the context menu, will start a stopped site, or stop
/// a started site
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ContextMenuTrayWebSite_Clicked(object sender, EventArgs e)
{
IIsWebSiteMenuItem item = (IIsWebSiteMenuItem)sender;
this.ToggleSiteState(item.WebSite);
}
private void ToggleSiteState(IIsWebSite site)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -