public void GetPokemon(string json) { progressBar1.Value = 0; flowLayoutPanelPokemon.Controls.Clear(); List <Tuple <string, string, string> > pokeInfo = new List <Tuple <string, string, string> >();//name, url of image, tag List <string> pokeAdded = new List <string>(); var result = JsonConvert.DeserializeObject <Pokemon_Location.RootObject>(json); int noEncounters = result.pokemon_encounters.Count; progressBar1.Maximum = noEncounters; for (int poke = 0; poke < noEncounters; poke++) { if (!pokeAdded.Contains(result.pokemon_encounters.ElementAt(poke).pokemon.name)) { string pokeTag = result.pokemon_encounters.ElementAt(poke).pokemon.name; pokeAdded.Add(pokeTag); string pokeJson = ApiRequest(Convert.ToString(result.pokemon_encounters.ElementAt(poke).pokemon.url)); var pokeData = JsonConvert.DeserializeObject <Pokemon_Details.RootObject>(pokeJson); string imageUrl = pokeData.sprites.front_default; string pokeName = ""; if (pokemonCache.ContainsKey(pokeTag)) { pokeName = pokemonCache[pokeTag]; } else { string pokeNameJson = ApiRequest(pokeData.species.url); var pokeSpeciesData = JsonConvert.DeserializeObject <Pokemon_Species.RootObject>(pokeNameJson); for (int language = 0; language < pokeSpeciesData.names.Count; language++) { if (pokeSpeciesData.names.ElementAt(language).language.name == "en") { pokeName = pokeSpeciesData.names.ElementAt(language).name; pokemonCache.Add(pokeTag, pokeName); language = pokeSpeciesData.names.Count;//end for loop } } } pokeInfo.Add(new Tuple <string, string, string>(pokeName, imageUrl, pokeTag)); } progressBar1.Value = poke + 1; } for (int i = 0; i < pokeInfo.Count; i++) { PokemonPicture pp = new PokemonPicture(); flowLayoutPanelPokemon.Controls.Add(pp); pp.SetName(pokeInfo.ElementAt(i).Item1); pp.SetPicture(pokeInfo.ElementAt(i).Item2); pp.SetTag(pokeInfo.ElementAt(i).Item3); pp.MouseClick += new MouseEventHandler(PokemonPicture_Click); pp.Controls[0].MouseClick += new MouseEventHandler(PokemonPicture_Click); pp.Controls[1].MouseClick += new MouseEventHandler(PokemonPicture_Click); if (pokedexIndex.ContainsKey(pokeInfo.ElementAt(i).Item3)) { if (pokedex.Contains(Convert.ToString(pokedexIndex[pokeInfo.ElementAt(i).Item3]))) { pp.Disable(); } } } }