C#中如何通过ComboBox选择电影标题在PictureBox显示对应海报
实现方案
WinForm 中的 ComboBox 控件支持绑定自定义对象,只需指定显示的属性字段,即可实现显示电影标题、同时存储对应海报路径的需求,无需暴露文件路径给用户。
步骤1:定义电影信息存储类
新增一个简单的自定义类,用来关联电影标题和海报路径:
public class MovieItem { // 用于显示在ComboBox下拉选项的电影标题 public string Title { get; set; } // 存储对应的海报完整路径,不会显示在界面上 public string PosterPath { get; set; } }
步骤2:修改窗体加载事件逻辑
调整原来的遍历逻辑,生成MovieItem对象加入ComboBox,同时指定显示的属性为Title:
private void Form1_Load(object sender, EventArgs e) { string[] imgs = Directory.GetFiles(@"C:\Users\me\Documents\C# program\Poster"); // 指定ComboBox显示的内容为MovieItem的Title属性 comboBox1.DisplayMember = "Title"; foreach(string file in imgs) { // 提取不带扩展名的文件名作为电影标题,你有其他标题来源可直接替换该行逻辑 string movieTitle = Path.GetFileNameWithoutExtension(file); comboBox1.Items.Add(new MovieItem { Title = movieTitle, PosterPath = file }); } }
步骤3:修改选中项变更事件逻辑
选中时取出MovieItem对象,读取PosterPath属性加载海报即可:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox1.SelectedItem is MovieItem selectedMovie) { pictureBox1.Image = new Bitmap(selectedMovie.PosterPath); } }
注意事项
- 若代码提示
Path类不存在,请在代码文件顶部添加引用using System.IO; - 如果电影标题和海报文件名不匹配,你只需替换生成
movieTitle的逻辑即可,后续绑定逻辑无需改动。
内容的提问来源于stack exchange,提问作者hahahahahaha
相关产品推荐
相关产品推荐

