从列表中填充Combobox

 a_2502881181 发布于 2023-02-13 12:09

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 List films { 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; }



}

}

所以这就是我想要填充我的组合框.谢天谢地收到任何帮助.

2 个回答
  • 我会保持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
    }
    

    2023-02-13 12:11 回答
  • 如果您问的是我想问的问题,则在表单加载中需要这样的内容:

    foreach(Listing listing in LoadListings()){
        cmbMovieListingBox.Items.Add(listing.GetFilmTitle());
    }
    

    2023-02-13 12:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有