private void Main_Load(object sender, EventArgs e)
 {
     SeenListUserControl = new SeenListUC(0, this);
     MoviesFLP.Controls.Add(SeenListUserControl);
     WishListUserControl = new WishListUC(Properties.Settings.Default.WishList.Count, this);
     MoviesFLP.Controls.Add(WishListUserControl);
 }
        private void ThreadBW_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            if (apiSelect == 0)
            {
                string url = string.Empty;

                if (!isSingle)
                {
                    url = OMDB.multipleAddress + SearchTb.Text.Trim() + "&apikey=" + OMDB.api;
                }
                else
                {
                    url = OMDB.singleAddress + SearchTb.Text.Trim() + "&apikey=" + OMDB.api;
                }
                using (WebClient wc = new WebClient())
                {
                    string        json   = wc.DownloadString(url);
                    List <string> imdbId = new List <string>();

                    JavaScriptSerializer oJS = new JavaScriptSerializer();

                    if (!isSingle)
                    {
                        Entity_M = oJS.Deserialize <ImdbEntity_M>(json);
                        var movies = oJS.Serialize(Entity_M);

                        if (Entity_M.Response == "True")
                        {
                            foreach (var movie in Entity_M.Search)
                            {
                                MovieUC MovieUserControl = new MovieUC(movie.imdbID, movie.Title, movie.Year, movie.Poster,
                                                                       movie.Type, TitleInWishList(movie.imdbID), TitleInSeenList(movie.imdbID), this);

                                imdbId.Add(movie.imdbID);

                                MoviesFLP.Invoke(new MethodInvoker(delegate
                                {
                                    MoviesFLP.Controls.Add(MovieUserControl);
                                }));
                            }
                        }
                        else
                        {
                            MessageBox.Show("There was an error requesting movie data", "Error");
                        }
                    }
                    else
                    {
                        Entity_S = oJS.Deserialize <ImdbEntity_S>(json);

                        if (Entity_S.Response == "True")
                        {
                            MovieUC MovieUserControl = new MovieUC(Entity_M.imdbID, Entity_S.Title, Entity_S.Year, Entity_S.Poster,
                                                                   Entity_S.Type, TitleInWishList(Entity_S.imdbID), TitleInSeenList(Entity_S.imdbID), this);

                            imdbId.Add(Entity_M.imdbID);

                            MoviesFLP.Invoke(new MethodInvoker(delegate
                            {
                                MoviesFLP.Controls.Add(MovieUserControl);
                            }));
                        }
                        else
                        {
                            MessageBox.Show("There was an error requesting movie data", "Error");
                        }
                    }
                    SeenListUserControl = new SeenListUC(NumberOfMoviesSeenInSearchCategory(imdbId), this);
                    MoviesFLP.Invoke(new MethodInvoker(delegate
                    {
                        MoviesFLP.Controls.Add(SeenListUserControl);
                    }));

                    WishListUserControl = new WishListUC(Properties.Settings.Default.WishList.Count, this);
                    MoviesFLP.Invoke(new MethodInvoker(delegate
                    {
                        MoviesFLP.Controls.Add(WishListUserControl);
                    }));
                }
            }
            else if (apiSelect == 1)
            {
                string url = string.Empty;

                if (!isSingle)
                {
                    url = TMDB.multipleAddress + "search/movie?api_key=" + TMDB.api + "&query=" + SearchTb.Text.Trim();
                }
                else
                {
                    url = TMDB.singleAddress + "search/movie?api_key=" + TMDB.api + "&query=" + SearchTb.Text.Trim();
                }
                using (WebClient wc = new WebClient())
                {
                    string        json    = wc.DownloadString(url);
                    List <string> imdb_id = new List <string>();

                    JavaScriptSerializer oJS = new JavaScriptSerializer();

                    if (!isSingle)
                    {
                        entity_Tmdb = oJS.Deserialize <TmdbEntity>(json);
                        var movies = oJS.Serialize(entity_Tmdb);

                        if (movies != null)
                        {
                            foreach (var movie in entity_Tmdb.results)
                            {
                                MovieUC MovieUserControl = new MovieUC(movie.id, movie.title, movie.release_date, TMDB.posterUrl + movie.poster_path,
                                                                       "Movie", TitleInWishList(movie.imdb_id), TitleInSeenList(movie.imdb_id), this);

                                imdb_id.Add(movie.imdb_id);

                                MoviesFLP.Invoke(new MethodInvoker(delegate
                                {
                                    MoviesFLP.Controls.Add(MovieUserControl);
                                }));
                            }
                        }
                        else
                        {
                            MessageBox.Show("There was an error requesting movie data", "Error");
                        }
                    }
                    else
                    {
                        TMDB_entity_S = oJS.Deserialize <TmdbEntity_S>(json);

                        if (TMDB_entity_S.imdb_id != null)
                        {
                            string imdbID = TMDB_entity_S.imdb_id;
                            string Title  = TMDB_entity_S.original_title;
                            string Year   = TMDB_entity_S.release_date;
                            string Poster = TMDB_entity_S.poster_path;
                            string Type   = TMDB_entity_S.genres;

                            MovieUC MovieUserControl = new MovieUC(imdbID, Title, Year, Poster,
                                                                   Type, TitleInWishList(imdbID), TitleInSeenList(imdbID), this);

                            imdb_id.Add(TMDB_entity_S.imdb_id);

                            MoviesFLP.Invoke(new MethodInvoker(delegate
                            {
                                MoviesFLP.Controls.Add(MovieUserControl);
                            }));
                        }
                        else
                        {
                            MessageBox.Show("There was an error requesting movie data", "Error");
                        }
                    }
                    SeenListUserControl = new SeenListUC(NumberOfMoviesSeenInSearchCategory(imdb_id), this);
                    MoviesFLP.Invoke(new MethodInvoker(delegate
                    {
                        MoviesFLP.Controls.Add(SeenListUserControl);
                    }));

                    WishListUserControl = new WishListUC(Properties.Settings.Default.WishList.Count, this);
                    MoviesFLP.Invoke(new MethodInvoker(delegate
                    {
                        MoviesFLP.Controls.Add(WishListUserControl);
                    }));
                }
            }
        }