Auf andere Form zugreifen?



  • Hallo,

    wie kann ich von einer Form auf eine andere Form zugreifen und dort z.B. eine Listview füllen?



  • DataTable data;

    data = GetData(); // irgendeine Funktion zum Lesen von Daten.

    Form2 frm = new Form2(daten); // neuer ctor, den du in Form2 einbauen musst
    DialogResult dr = frm.ShowDialog();
    if (dr == DialogResult.Ok)
    {
    }

    frm.Dispose();



  • form1
    {
    .
    .
    .
    .
    Form2 fenster2 = new Form2();
    .
    .
    .
    public void fenster2_zeigen_und_befüllen()
    {
    fenster2.Show();
    fenster2.ListView.Items.Add("gugu");
    .
    .
    .
    }
    .
    .
    .
    .
    }



  • du könntest auch form2

    static
    

    machen



  • eigentlich ist es besser die initialisierung und verarbeitung der Daten im Formular selbst zu machen.

    Wenn daten für das Formular notwendig sind, dann übergebe diese im Konstruktor.
    Dort verarbeite sie.

    Wenn du Daten wieder abfragen willst, füge den Formular eine entsprechendes Property oder Methode hinzu.
    Beispiel:

    public partial class DialogToDisplaySomething : Form
        {
            public string SelectValue
            {
                get
                {
                    if (listBox1.SelectedIndex == -1)
                        return String.Empty;
                    return listBox1.SelectedItem.ToString();
                }
            }
    
            public DialogToDisplaySomething(List<string> availableValues)
            {
                InitializeComponent();
                listBox1.DataSource = availableValues;
            }
        }
    

    der aufruf würde dann so aussehen:

    public  string DisplayValues()
            {
                List<string> availableValues = new List<string>();
                availableValues.Add("Hello");
                availableValues.Add("guys");
                DialogToDisplaySomething f = new DialogToDisplaySomething(availableValues);
                if (f.ShowDialog() == DialogResult.OK)
                    return f.SelectValue;
                return String.Empty;
            }
    

    das ist dann etwas besser gekapselt und du machst keine Formulare von den Inhalten in den Klassen abhängig.
    Auf diesen Formular ist nun eine Listbox drauf. Was ist, wenn dein Chef ankommt, und möchte dort gerne eine ComboBox haben.
    Im beispiel von hilf sähe das so aus, dass man alle aufrufe des Formulars ebenfalls ändern muss. In meinem Beispiel spielt die Art und Weise der Anzeige keine Rolle.


Anmelden zum Antworten