使用带有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;
}
}
有很多方法可以完成这样的任务。
选项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);
}