Hi
Kann mir jemand sagen wie ich dieses Problem lösen kann?
Ich habe ein formular in dem ich etwas in einer textbox eingebe, beim klicken auf OK sollte den Inhalt in einer Listbox kopiert werden, diese Listbox befindet sich jedoch auf einer anderen Maske....
dachte so sollte es funktionieren aber geht nicht 🙁
frmGruppen Gruppen = new frmGruppen();
Gruppen.lstTurnierelemente.Items.Add(txtBezeichnung.Text);
Hi Talla
Danke für den Link
Habe aber eine Frage, ich muss ja den string von txtBezeichnung.Text in der Listbox einfügen. Wie füge ich diesen String ein? In der Listbox kommen ja Object's und nicht strings ?!?!
private void btnOK_Click(object sender, System.EventArgs e)
{
frmGruppen Gruppen = new frmGruppen();
Gruppen.lstTurnierelemente.Items = this.txtBezeichnung.Text;
if (Gruppen.ShowDialog() == DialogResult.OK)
{
this.txtBezeichnung.Text = Gruppen.lstTurnierelemente.Items;
}
}
Hi w1z4rd2003!
Wenn ich mich nicht irre, werden von der ListBox zur Textausgabe die ToString-Methoden der Objekte benutzt. Du musst nur sicherstellen, dass die ToString-Methoden oder Objekte das ausgeben, was du möchtest.
Einen string kannst du einfach durch Add hinzufügen.
listBox1.Items.Add("Test");
der Marcel
:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]
private void btnEinfügen_Click(object sender, System.EventArgs e)
{
object x = lstVereine.SelectedItem.ToString();
lstAusgewählteVereine.Items.Add(x);
}
im objekt x habe ich folgendes: System.Data.DataRowView 🤔 🤔
Hallo w1z4rd2003,
nicht jede Klasse bietet auch eine ToString-Methode, die tut was man will. Du wirst dein DataRowView von Hand in einen genehmen String umwandeln müssen.
herbivore
Hi w1z4rd2003!
Du könntest auch eine eigene Klasse schreiben, welche von dieser erbt und ToString so überschreiben, wie es deinen Vorstellungen entspricht.
der Marcel
:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]
wieso reicht das nicht??? beim adden des Objekt verwende ich ja die ToString Methode
object x = lstVereine.SelectedItem.ToString();
lstAusgewählteVereine.Items.Add(x.ToString());
Hallo w1z4rd2003,
haben wir doch erklärt. Weil die ToString-Metode von DataRowView nicht so implementiert ist, wie du willst.
Und durch mehrmaliges Anwenden von ToString ändert sich nichts mehr. Wenn x ein String-Object ist, ist immer x == x.ToString ().
herbivore
Hi
Also mit diesem Code wird folgendes durchgeführt:
Wenn ich auf frmTurnierElemente auf OK klicke wird in der Listbox auf frmGruppen den String eingefügt den ich in frmTurnierelemente in der Textbox eingegeben habe.
das komische ist wenn ich jetzt ein zweites mal ein Wert eingebe und auf OK klicke wird eine zweite Instanz von frmGruppen geöffnet, sodass ich nach jedem klick ein neues frmGruppen offen habe... was ist da falsch?
private void btnOK_Click(object sender, System.EventArgs e)
{
frmGruppen Gruppen = new frmGruppen();
//Gruppen.txtBox.Text = (this.txtBezeichnung.Text);
Gruppen.lstTurnierelemente.Items.Add(this.txtBezeichnung.Text);
if (Gruppen.ShowDialog() == DialogResult.OK)
{
Gruppen.lstTurnierelemente.Items.Add(this.txtBezeichnung.Text);
}
}
Hi!
Original von w1z4rd2003
das komische ist wenn ich jetzt ein zweites mal ein Wert eingebe und auf OK klicke wird eine zweite Instanz von frmGruppen geöffnet, sodass ich nach jedem klick ein neues frmGruppen offen habe... was ist da falsch?private void btnOK_Click(object sender, System.EventArgs e) { frmGruppen Gruppen = new frmGruppen(); // <-- Hier machst du immer eine neue Instanz von frmGruppen auf //Gruppen.txtBox.Text = (this.txtBezeichnung.Text); Gruppen.lstTurnierelemente.Items.Add(this.txtBezeichnung.Text); if (Gruppen.ShowDialog() == DialogResult.OK) { Gruppen.lstTurnierelemente.Items.Add(this.txtBezeichnung.Text); } }
das liegt daran, weil du auf den Klick hin immer wieder eine neue Instanz von frmGruppen erstellst und anzeigst!
der Marcel
:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]
Ja aber wie kann ich ansonsten auf die Listbox von frmGruppen zugreiffen?
Irgendwie muss ich ja eine Instanz machen ansonsten kann ich nicht zugreiffen 🤔
Hi!
Indem du die Referenz nicht innerhalb der Klick-Methode erstellst, sondern in der Klasse ein Feld vom Typ frmGruppen deklarierst, welches im Konstruktor initialisiert wird und auf dass du dann von deinen Methoden aus zugreifen kannst.
der Marcel
:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]
Hallo w1z4rd2003,
Irgendwie muss ich ja eine Instanz machen ansonsten kann ich nicht zugreiffen
Ja, eine aber halt nicht jedes Mal eine neue. Wir sind jetzt wieder sehr bei den Grundlagen der Programmierung angekommen. Bitte verwende (noch) mehr Zeit auf das Bücherstudium.
herbivore
Ja das ich jedes mal eine neue mache ist mir hier schon klar. Ich sehe auch das Problem. aber die frage ist wo ich jetzt diese Instanz erstellen muss. Wenn ich sie nur einaml erstellen beim öffnen des Formulare (_Load) kennt er die Instanz im Click Ereigniss nicht mehr 🙁
Wo muss ich diese Instanz erstellen?
Hi!
Das habe ich dir vorhin beschrieben.
der Marcel
:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]
Ich habe es ja im Konstruktor eingefügt. Was ist hier falsch ?? 🙁
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace Turnier
{
/// <summary>
/// Summary description for frmTurnierelemente.
/// </summary>
public class frmTurnierelemente : System.Windows.Forms.Form
{
private System.Windows.Forms.Label lblBezeichnung;
private System.Windows.Forms.TextBox txtBezeichnung;
private System.Windows.Forms.GroupBox grpTypBestimmen;
private System.Windows.Forms.RadioButton rdbPunktrunde;
private System.Windows.Forms.RadioButton rdbPlayoff;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnAbbrechen;
public System.Windows.Forms.Form frmGruppen;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public frmTurnierelemente()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
frmGruppen Gruppen = new frmGruppen();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
WINDOWS FORM DESIGNER CODE.....
private void btnOK_Click(object sender, System.EventArgs e)
{
//Gruppen.txtBox.Text = (this.txtBezeichnung.Text);
Gruppen.lstTurnierelemente.Items.Add(this.txtBezeichnung.Text);
if (Gruppen.ShowDialog() == DialogResult.OK)
{
Gruppen.lstTurnierelemente.Items.Add(this.txtBezeichnung.Text);
}
}
}
}