2016-04-12 2 views
0

ich derzeit versuche 1 auf Formular, um Informationen aus einem Listenfeld zu schicken, um 2C# Übertragen von Inhalten eines listbox von einer Form in eine andere

Das Listenfeld mithilfe von Tasten bestückt ist, die in die Liste einen Eintrag hinzufügt In Formular 1 möchte ich, dass das System diese Elemente zwischen den Formularen in meiner Anwendung überträgt, indem es die in der Listbox in Form 1 vorhandenen Elemente in die Listbox in Form 2 überträgt. Form 2 kann dann Elemente zu seiner Listbox hinzufügen auf die gleiche Weise über Buttons und sende die aktualisierten Informationen im Listenfeld zurück.

Meine Idee ist, dass ich die Informationen in der Listbox vor dem Wechsel von Formular 1 zu Formular 2 aufzeichnen muss, und dann, sobald Formular 2 geöffnet wird, die Informationen aus Formular 1 wird dann der Listbox in Formular 2 hinzugefügt Englisch: www.mjfriendship.de/en/index.php?op...39&Itemid=32 Aber zu sagen, dass ich neu in der Codierung bin, ist eine Untertreibung, also habe ich keine Ahnung, wie man das macht Jede Hilfe, die Sie zur Verfügung stellen können, wird geschätzt. Grüße, Tom Smith

Antwort

0

können Sie einfach die Listbox übergeben, dann legen Sie die Datenquellen gleich. Sie können es in der contructor tun wie dieses

von form1

Form2 form = new Form2(listBox1); 

von form2

public Form2(listbox box) 
{ 
    InitializeComponent(); 
    listbox1.datasource = box.datasource; 
} 

So stellen Sie sicher erste InitializeComponent() aufrufen, sonst werden Sie Fehler erhalten, weil ListBox1 gewohnt existieren noch.

Wenn Form2 bereits machen, ein Verfahren in form2 erstellt wird eingestellt von form1

von form1

form.setListBoxDataSource(listBox1); //form = an instance of form2 

von form2

public void setListBoxDataSource(listBox1 box) 
{ 
    listbox1.datasource = box.datasource; 
} 

Es ist wichtig, dass diese an der Arbeit zu beachten, Sie müssten die Elemente zu Ihrer ersten Listbox aus einer Datenquelle wie einer Liste hinzufügen. Wenn Sie listBox1.Item.Add ("etwas") verwenden, müssen Sie die Listbox-Elemente durchlaufen, sie zu einer Liste hinzufügen, die Liste übergeben und die Liste als Datenquelle für die Liste 2 festlegen.

0

Es gibt zwei Konzepte, die helfen werden, bessere Software zu schreiben.

Zunächst ist es oft besser, Daten außerhalb von Formularen zu pflegen. .NET-Programmierer werden von Visual Studio geleitet, um Daten in Formularen zu speichern. Dies geschieht jedoch nicht mit Datenbanken wie bei Verwendung von Entity Framework. Wenn Sie keine Datenbanken verwenden, ist es eine gute Idee, unsere Daten trotzdem zu trennen.

Ein weiterer Punkt ist, dass es besser ist, ein Objekt zu erstellen, um die Daten separat vom Steuerelement zu verwalten und die Kontrolle (n) an diese Datenquelle zu binden.

Um ein Beispiel zu erstellen, erstellen Sie einfach eine Formularanwendung und fügen ein zweites Formular hinzu.

Ich bin nicht sicher, wie Sie Form2 relativ zu Form1 Anzeige erscheint aber für die Zwecke meiner Probe werde ich zeigen Form2 nach Form1 (von Haupt) auf die folgende Weise:

Application.Run(new Form1()); 
Application.Run(new Form2()); 

In der Programmklasse Fügen Sie Folgendes hinzu:

static public BindingList<String> Items = new BindingList<String>(); 

Das erstellt eine Liste der Zeichenfolgen. Beachten Sie, dass ich es statisch mache, aber es gibt andere Möglichkeiten, ich weiß nicht, was Ihre relevanten Anforderungen sind. Um BindingList verwenden zu können, benötigen Sie folgendes "using";

using System.ComponentModel; 

Ich gehe davon aus, dass, da Sie Form2 wollen Daten nach Form1 Daten hinzugefügt werden, die Sie eigentlich nur eine Liste verwenden. Wenn Sie zwei Listen benötigen, ist es einfach genug, zwei zu erstellen.

dann im Konstruktor add des Formulars (nach InitializeComponent):

BindingSource bs = new BindingSource(); 
listBox1.DataSource = Program.Items; 

Ich bin nicht sicher, was bedeutet „Listenfeld unter Verwendung von Tasten bestückt ist“, aber ich nehme an, Sie nicht, dass erklären, denn das ist irrelevant. Für meine Probe erzeuge ich Daten mit DateTime. So in dem Click-Ereignis der Schaltfläche tun „Program.Items.Add“, wie im folgenden Beispiel:

Program.Items.Add("1 "+DateTime.Now.ToString("mm:ss.ff")); 

, dass ein Element in die Einzelteile werden hinzuzufügen. Die Daten sind natürlich die Daten, die Ihre Anwendung benötigt. Der neue Zusatz wird in der ListBox angezeigt. Ich habe dort "1", weil ich für Form2 "2" verwende. Ansonsten ist der Code für Form für meine Probe gleich.

Ich hoffe, dass der Code angemessen beschreibt. Ich kann mehr davon posten, wenn das nicht klar ist.