使用带有PictureBox的组合框下拉列表

本文关键字:组合 下拉列表 PictureBox | 更新日期: 2023-09-27 18:20:42

我正试图使用组合框下拉列表在picturebox中显示一张图片,其中填充了各种类型的书籍;网络,编程,网络。当用户选择一本特定的书时,将显示封面的图片。我尝试了很多不同的方法,但似乎都不起作用。我有这个GenreComboBox_SelectedIndexChanged,所以我想这是一个if/else-if语句的问题。以下是我一直在尝试的,我相信还有很长的路要走。建议?非常感谢!

        //if ((string)thisGenreComboBox.SelectedItem == ("Networking"))
        //if (thisGenreComboBox.Text == "Networking")
        if (thisGenreComboBox.SelectedIndex == 1)
        {
            thisGenrePictureBox.Image = Image.FromFile(@"networkingcover.jpg");
        }

*已编辑*

以下是我最终想到的,非常适合我的需求。此外,我还将同样的方法应用于ListBox,效果也很好。

        switch (thisGenreComboBox.SelectedIndex)
        {
            case 0:
                {
                    thisGenrePictureBox.ImageLocation = ("NetworkCover.jpg");
                    break;
                }
            case 1:
                {
                    thisGenrePictureBox.ImageLocation = ("ProgramCover.jpg");
                    break;
                }
            case 2:
                {
                    thisGenrePictureBox.ImageLocation = ("WebProgramCover.jpg");
                    break;
                }
        }

使用带有PictureBox的组合框下拉列表

有很多方法可以完成这样的任务。

选项1

例如,您可以对图像使用命名约定,例如,如果您有Networking、Programming和Web books,则可以使用NetworkingCover.jpg、ProgrammingCover..jpg和WebCover.jpg来命名图像。

填写您的组合框:

thisGenreComboBox.Items.Add("Networking");
thisGenreComboBox.Items.Add("Programming");
thisGenreComboBox.Items.Add("Web");

然后您可以在comboBox:的SelectedIndexChanged事件中使用此代码

if(thisGenreComboBox.SelectedIndex>-1)
{
    var imageName = string.Format("{0}Cover.jpg", thisGenreComboBox.SelectedItem);
    // I suppose your images are located in an `Image` folder
    // in your application folder and you have this items to your combobox.
    var file = System.IO.Path.Combine(Application.StartupPath, "images" , imageName);
    thisGenrePictureBox.Image = Image.FromFile(file);
}

选项2

作为另一种选择,你可以为你的书创建一个类:

public class Book
{
    public string Title { get; set; }
    public string Image { get; set; }
    public overrides ToString()
    {
        return this.Title;
    }
}

然后创建你的书并填充你的组合框:

thisGenreComboBox.Items.Add(
    new Book(){Title= "Networking" , Image = "NetworkingCover.jpg"});
thisGenreComboBox.Items.Add(
    new Book(){Title= "Programming" , Image = "ProgrammingCover.jpg"});
thisGenreComboBox.Items.Add(
    new Book(){Title= "Web" , Image = "WebCover.jpg"});

然后在组合框的SelectedIndexChnaged事件中:

if(thisGenreComboBox.SelectedIndex>-1)
{
    var imageName = ((Book)thisGenreComboBox.SelectedItem).Image;
    // I suppose your images are located in an `Image` folder
    // in your application folder and you have this items to your combobox.
    var file = System.IO.Path.Combine(Application.StartupPath, "images" , imageName);
    thisGenrePictureBox.Image = Image.FromFile(file);
}