private async void LoadUserList(string connectionString, ListBox listbox)
        {
            listbox.Items.Clear();
            listbox.Items.Add("Loading...");

            try
            {
                using (var model = new WintotalModel(connectionString))
                {
                    var users = await (from n in model.QuickListNames
                                       join q in model.QuickLists on n.QLNameID equals q.QLNameID into qlstats
                                       orderby n.Name
                                       select new WintotalUser
                                       {
                                           QLNameID = n.QLNameID,
                                           Name = n.Name + " - " + qlstats.Count() + " list(s)"
                                       }).ToListAsync();

                    listbox.Items.Clear();
                    listbox.SelectedValuePath = "QLNameID";
                    listbox.DisplayMemberPath = "Name";

                    foreach (var user in users.Distinct())
                    {
                        listbox.Items.Add(user);
                    }
                }
            }
            catch (Exception e)
            {
                UiUtilities.ShowErrorMessage("An error occurred loading data: " + e.Message);
            }
        }
        public static void CopyQuickLists(int sourceQlNameID, int destQlNameID, string sourceConnStr, string destConnStr)
        {
            // The technique used to copy the quick lists came from http://stackoverflow.com/a/18114082/132374
            try
            {
                using (var sourceModel = new WintotalModel(sourceConnStr))
                {
                    using (var destinationModel = new WintotalModel(destConnStr))
                    {
                        var quickLists = sourceModel.QuickLists
                            .Where(q => q.QLNameID == sourceQlNameID)
                            .Include("QuickListEntries")
                            .AsNoTracking();
                        foreach (var quickList in quickLists.ToList())
                        {
                            // Assign the quick list to the destination user
                            quickList.QLNameID = destQlNameID;

                            // The PK value will be recreated
                            quickList.QLID = 0;

                            destinationModel.QuickLists.Add(quickList);
                        }

                        destinationModel.SaveChanges();
                    }
                }
            }
            catch (Exception e)
            {
                UiUtilities.ShowErrorMessage("An error occurred while copying the quick lists: " + e.Message);
            }
        }
        public static void DeleteQuickListsOfUser(int qlNameID, string connectionString)
        {
            try
            {
                using (var model = new WintotalModel(connectionString))
                {
                    var quickLists = from q in model.QuickLists
                                     where q.QLNameID == qlNameID
                                     select q;
                    foreach (var quickList in quickLists.ToList())
                    {
                        model.QuickLists.Remove(quickList);
                    }

                    model.SaveChanges();
                }
            }
            catch (Exception e)
            {
                UiUtilities.ShowErrorMessage("An error occurred while attempting to delete the destination "
                    + "user's quick lists: " + e.Message);
            }
        }