/// <summary>
        /// Handles notification that the specified networksetting was changed, added, or removed.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="networkSetting"></param>
        private void ConfigurationChanged_EventHandler(object sender, NetWorkSetting networkSetting)
        {
            // Invalidate the request cache for network when things change on the connection since the user name or URL may have changed.  We could be more selective in when we need to invalidate, but for now this will do.
            RequestCache.ForNetwork(networkSetting).Invalidate();

            if (!this.Visible)
            {
                return;
            }

            try
            {
                TestConnections();

                //determine if the networksetting was added, deleted, or changed
                RequestListGridView gridView = tabs.TabPages.Cast <TabPage>().Select(tp => tp.Controls[0] as RequestListGridView).Where(gv => gv != null && gv.Network.CredentialKey == networkSetting.CredentialKey).FirstOrDefault();

                if (gridView == null)
                {
                    //new network
                    gridView = CreateList(networkSetting);
                }
                else if (!Configuration.Instance.NetworkSettingCollection.NetWorkSettings.Cast <NetWorkSetting>().Any(n => n.CredentialKey == networkSetting.CredentialKey))
                {
                    //network was deleted
                    tabs.TabPages.Remove((TabPage)gridView.Parent);

                    gridView.StopAutoprocessor();
                    gridView.Dispose();
                    gridView = null;
                }
                else
                {
                    //network setting changed
                    gridView.OnConfigurationChanged(networkSetting);
                }

                ToggleNoNetworksMessage();

                ReloadAllLists();

                RefreshAutoResponse();
            }
            catch (Exception ex)
            {
                log.Error(ex);
                MessageBox.Show(ex.Message, "Unexpected Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        RequestListGridView CreateList(NetWorkSetting ns)
        {
            var existing = AllLists().FirstOrDefault(l => l.Network == ns);

            if (existing != null)
            {
                return(existing);
            }

            var g = new RequestListGridView(ns)
            {
                Dock            = DockStyle.Fill,
                Filter          = ns.Filter,
                PageSize        = ns.PageSize,
                SortColumn      = ns.Sort,
                IsSortAscending = ns.SortAscending
            };

            var tab = new TabPage {
                Text = ns.NetworkName, Controls = { g }
            };

            tabs.TabPages.Add(tab);
            tab.ImageKey = TabIcon_Regular;

            g.RequestRowDoubleClick  += rlgvRequestList_RequestRowDoubleClick;
            g.ReloadStarted          += (_, __) => SetReloadingStatusText();
            g.SelectedRequestChanged += (_, __) => ToggleDetailsButton();
            g.Reloaded     += (_, __) => { SetReloadingStatusText(); ToggleDetailsButton(); SetNewRequestsIndicator(tab); };
            g.ReloadFailed += (_, __) => { SetReloadingStatusText(); ToggleDetailsButton(); SetNewRequestsIndicator(tab); };
            g.NewRequestsAvailableChanged += (_, __) => { SetNewRequestsIndicator(tab); ResetNewRequestsIndicator(); };

            EventHandler saveGridSettings = (_, __) =>
            {
                ns.PageSize      = g.PageSize;
                ns.Filter        = g.Filter;
                ns.SortAscending = g.IsSortAscending;
                ns.Sort          = g.SortColumn;
                Configuration.SaveNetworkSettings();
            };

            g.FilterChanged   += saveGridSettings;
            g.PageSizeChanged += saveGridSettings;
            g.SortModeChanged += saveGridSettings;

            SetNewRequestsIndicator(tab);

            return(g);
        }