Füllen der Combobox aus einer Liste
Newb hier
Zur Zeit arbeite ich an einem Formular, welches ein Kombinationsfeld, das zeigen mehrere Charlie Brown TV-specials, die Sie können klicken Sie auf auswählen und eine Beschreibung, Bewertung, Laufzeit, etc. Ich bin in der Nähe, aber ich bin nicht dort in Bezug auf füllen der combo-box und ich bin der Hoffnung, für einige Hilfe und Anleitung. Ich sah mehrere Dinge, die andere getan haben, aber ich bin nicht kompetent genug, um Rückschlüsse auf die Antworten von dem, was ich habe sehen können, so weit.
Moment versuche ich mich auch:
1. Holen Sie sich die Inserate von Ihrem load-Methode
2. Schleife
3. Zugang zu meinem Kombinationsfeld füllen Sie die box mit der Zeit aus der Liste.
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<Listing> 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<Listing> LoadListings()//load movie descriptions as list
{
StreamReader fileIn = new StreamReader(FILE_NAME);
List<Listing> entries = new List<Listing>();
//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());
}
}
}
}
Auflistung.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; }
}
}
Also das ist, was ich versuche zu tun, zum Auffüllen meiner combo-box. Jede Hilfe ist zum Glück erhalten.
- Ihr code bereits verwendet loops und greift auf die combo-box. Was genau hält Sie davon ab, die Liste Durchlaufen und hinzufügen der einzelnen Elemente text in die combobox?
- Wenn ich es ausführen (klicken Sie auf den grünen Pfeil, um zu kompilieren/testen) das Feld nicht füllen. So, dass bedeutet für mich, dass ich habe keine Ahnung, was ich mache. Im Allgemeinen, ich bin ein newb, ich kann Ihnen sagen, ich habe keine Ahnung, was ich mache. Ich hatte gehofft, würde das Kombinationsfeld füllen mit dem ersten Stück von jeder Zeile in meinem text Dokument.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde halt
List<Listing>
in der Klasse, so dass Sie darauf zugreifen können, wenn ein Benutzer darauf klickt. Ich würde auch werfen diese auf seinen eigenen thread und nicht direkt in das Load-Ereignis. Wenn es ein langer Prozess, Sie werden hängen, die ui.Laden
Wenn der Benutzer das Element auswählt
wenn Sie sich Fragen, was ich denke, Sie Fragen, brauchen Sie etwas wie dies in Ihrer form load:
Gibt es ein Problem mit der visuellen Steuerelemente aktualisieren (wie ComboBox, etc): Sie möchte lieber verhindern, dass Sie re-Malerei bei jeder änderung der Daten (an jedem Punkt neben in deinem Fall):
Einer Zeile der code von Tsukasa nicht, weil es geschrieben ist FistOrDefault() anstelle von FirstOrDefault()
Leider habe ich nicht genug haben, zeigen Sie auf fügen Sie einfach einen Kommentar...
Vielleicht hilft es ja jemandem. Aber in meiner situation musste ich
cmbMovieListingBox.Text
stattcmbMovieListingBox.SelectedValue
(wie @Tsukasa Beispiel):Und auch
FirstOrDefault()
stattFistOrDefault()
.Hoffe es hilft jemandem