Combobox, как получить выбранный элемент, чтобы показать тему - PullRequest
2 голосов
/ 25 мая 2010

Я играю в крестики-нолики и пытаюсь добавить поле со списком, которое изменит фон приложений в зависимости от того, что выбрал человек сейчас. У меня есть лето, весна, осень, зима, и изображения находятся в Папка bin / debug Как мне заставить это работать? Я не знаю, с чего начать, и учебники немного сбивают с толку. Не могли бы вы помочь мне

Ответы [ 2 ]

0 голосов
/ 25 мая 2010

Не совсем понятно, о чем вы спрашиваете. Предполагая, что в папке bin \ Debug есть растровые файлы с именами, такими как «spring.png» и т. Д., Это должно работать:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        comboBox1.Items.AddRange(new string[] { "Spring", "Summer", "Fall", "Winter" });
        comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
    }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
        string folder = Application.StartupPath;
        string theme = (string)comboBox1.Items[comboBox1.SelectedIndex];
        string path = System.IO.Path.Combine(folder, theme + ".png");
        Image newImage = new Bitmap(path);
        if (this.BackgroundImage != null) this.BackgroundImage.Dispose();
        this.BackgroundImage = newImage;
    }
}
0 голосов
/ 25 мая 2010

Есть много способов сделать это. Это, наверное, самое простое:

  1. Установите BackgroundImageLayout вашей основной формы на Stretch.
  2. Поместите 4 PictureBox элементов управления на форму и установите для их Visible свойств значение false. Назовите их pbWinter, pbSpring и т. Д. Установите свойство Image для каждого, перейдя к файлу изображения для каждого сезона.
  3. Добавьте ComboBox к вашей форме. Добавьте пункты «Зима», «Весна», «Лето» и «Осень».
  4. В обработчике событий SelectedIndexChanged поля со списком проверьте свойство Text поля с помощью оператора switch и установите соответствующее заднее изображение с кодом, подобным этому:

    this.BackgroundImage = pbWinter.Image; // etc. ...

Обновление: Вот как сделать оператор switch:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    switch (comboBox1.Text)
    {
        case "Winter":
            this.BackgroundImage = pbWinter.Image;
            break;
        case "Spring":
            this.BackgroundImage = pbSpring.Image;
            break;
        // etc...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...