Newb在这里,我正在制作一个有一个组合框的表格,它会显示几个Charlie Brown电视特价,您可以点击选择并查看描述,评级,运行时等.我很接近,但我在填充组合框方面不存在,我希望得到一些帮助和指导.我已经看过别人做过的几件事,但是我知识不足以从我迄今为止看到的内容中推断出答案.
现在我也在尝试:1.从你的加载方法获取列表2.循环它们3.访问我的组合框,用列表中的时间填充该框.
Form1.cs的
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Globalization;//Used for Sting.ToUpperCase... using System.Threading; using System.Threading.Tasks;// Needed for Streaming... using System.IO;// Needed for Streaming... namespace a100___GUI___VideoStoreSelections { public partial class FormMovieLookUp : Form { private const String FILE_NAME = "txt_movieDescriptions.txt";//connect to text file in debug private Listfilms { get; set; } public FormMovieLookUp() { InitializeComponent(); } private void cmbMovieListingBox_SelectedIndexChanged(object sender, EventArgs e) { txtTitleBox.Text = cmbMovieListingBox.SelectedItem.ToString(); } //ToolBox -- my program specific tools public List LoadListings()//load movie descriptions as list { StreamReader fileIn = new StreamReader(FILE_NAME); List entries = new List (); //loop through every line of the file while (!fileIn.EndOfStream) { String line = fileIn.ReadLine(); String[] pieces = line.Split(':'); if (pieces.Length < 4) continue;//error handling - set to length of text items Listing myListing = new Listing(pieces[0], pieces[1], pieces[2], pieces[3]); entries.Add(myListing); } fileIn.Close(); return entries; } private void FormMovieLookUp_Load_1(object sender, EventArgs e) { films = LoadListings(); foreach (Listing film in films) { Console.WriteLine(film); cmbMovieListingBox.Items.Add(film.GetFilmTitle()); } } } }
Listing.CS
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace a100___GUI___VideoStoreSelections { public class Listing { private String filmTitle; private String description; private String filmRunTime; private String filmRating; public Listing(String filmTitle, String description, String filmRunTime, String filmRating) { this.filmTitle = filmTitle; this.description = description; this.filmRunTime = filmRunTime; this.filmRating = filmRating; } public String GetFilmTitle() { return filmTitle; } public String GetDescription() { return description; } public String GetFilmRunTime() { return filmRunTime; } public String GetFilmRating() { return filmRating; } }
}
所以这就是我想要填充我的组合框.谢天谢地收到任何帮助.
我会保持List<Listing>
在课程级别,以便您在用户点击它时可以访问它.我也会把它放在它自己的线程上,而不是直接在Load事件中.如果这是一个漫长的过程,你将挂起ui.
private List<Listing> films { get; set; }
加载
films = LoadListings(); foreach (Listing film in films) { cmbMovieListingBox.Items.Add(film.GetFilmTitle()); }
当用户选择项目时
Listing film = films.Where(f => f.GetFilmTitle().Equals(cmbMovieListingBox.SelectedValue)).FistOrDefault(); if (film != null) { //do work }
如果您问的是我想问的问题,则在表单加载中需要这样的内容:
foreach(Listing listing in LoadListings()){ cmbMovieListingBox.Items.Add(listing.GetFilmTitle()); }