private void btnSetLevel_Click(object sender, EventArgs e) { string text = txtFile.Text; using (ObjectSelector selector = new ObjectSelector()) { selector.DrawText = true; int imgWidth = WorldViewer.LevelImageWidth; int imgHeight = WorldViewer.LevelImageHeight; int addedCount = LevelList.Count; for (int i = 0; i < addedCount; i++) { ListItem level = LevelList[i]; Grid map = (Grid)level.Value; ListItem item = new ListItem(map, map.Name, imgWidth, imgHeight); item.BackColor = level.BackColor; selector.AddItem(item, map.FileName.Equals(text, StringComparison.OrdinalIgnoreCase)); } selector.BackColor = this.BackColor; selector.Icon = this.Icon; if (addedCount == 0) { MessageBox.Show(this, "No level maps to choose from."); return; } Size size = Renderer.GetSizeForCount(addedCount, 5, 6); selector.ClientSize = new Size(imgWidth * size.Width, imgHeight * size.Height); selector.SortByText = LevelList.SortByText; selector.SortItems(); selector.SetRenderItem(delegate(ListItem item, Graphics g) { Grid grid = (Grid)item.Value; Renderer.Render(grid, g, item.Width, item.Height); }); DialogResult result = selector.ShowDialog(this); if (result == DialogResult.OK) { Grid map = (Grid)selector.SelectedItem; levelCopy.Name = map.Name; levelCopy.File = map.FileName; txtFile.Text = map.FileName; txtName.Text = map.Name; } } }