Laden...

In UserControls auf einen definierten Wert zugreifen und/oder den ändern?!

Erstellt von windowsformfrage vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.008 Views
W
windowsformfrage Themenstarter:in
6 Beiträge seit 2010
vor 13 Jahren
In UserControls auf einen definierten Wert zugreifen und/oder den ändern?!

Hallo zusammen,
Ich hab ne Frage. Momentan schreibe ich gerade ein kleines Spiel. Ich benutze für die Änderung der Formulare UserControls. Während des Spieles muss ich immer wieder auf die definerten Werte des Objekts Spieler zugreifen und/oder manipulieren. Wie kann ich auf einem UserControl auf einen in der "Form1" definierten Wert zugreiffen? Im Anhang habe ich den Quellcode meines "Spieles", bei dem ich in der Form1 das Objekt Spieler (s1) angelegt habe. In der UserControl_Registrieren soll der in einer textBox1 eingegebene Name = Spieler.Name sein.
Also

s1.Name = textBox1.Text;

Wenn ich das aber so eingebe bringt der Compiler einen Fehler..
Kann mir jemand helfen?
Mfg Timon

Hier noch mein Quellcode von Form1:

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;

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public static void Main()
        {
            Spieler s1 = new Spieler();
        }
//>>>>>>>>>>>>>>>>>>>>>>>Definition>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        public class Spieler
        {
            public string Name;
            public int Attk;
            public int MagieDeff;
            public int PhysDeff;
            public int Exp;
            public int Hp;
            public int Geld;
            public int lvl;
        }
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

        private void button1_Click(object sender, EventArgs e)
        {
             panel1.Controls.Clear();
             panel1.Controls.Add(new UserControl_Registrieren()); 
        }
    }
}

und den von der UserControl:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class UserControl_Registrieren : UserControl
    {
        public UserControl_Registrieren()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            s1.Name = textBox1.Text;

            //panel2.Controls.Clear();
            //panel2.Controls.Add(new UserControl_Menue()); 
        }
    }
}
Gelöschter Account
vor 13 Jahren

Ich weiss garnicht wo ich anfangen soll ...
Deswegen bewusst nur ganz kurz.

Ich würde die UserControls von einem Interface erben lassen
das eine Methode enthält um eine Spieler Struktur übergeben zu bekommen.
Einfach und grob gesagt.

Darf ich dich fragen welche Erfahrungen die bisher mit OOP, Interfaces, ect. hast?

5.742 Beiträge seit 2007
vor 13 Jahren

Hallo windowsformfrage,

siehe [FAQ] Kommunikation von 2 Forms - s1 ist ein Instanzmember von Form1 und kann deshalb nicht so innerhalb von UserControl_Registrieren verwendet werden wie in deinem Code.

J
3.331 Beiträge seit 2006
vor 13 Jahren

Außerdem musst du dich mit der **Gültigkeit **von Variablen befassen. Wenn du in Main einen Spieler deklarierst und erzeugst, weiß keine andere Stelle des Programms etwas davon. Wo und wie wird eigentlich das Formular erzeugt und aufgerufen?

Nebenbei sollten Bezeichner wie Form1 und textBox1 verboten werden, siehe .NET Richtlinien für Namen oder als Kurzfassung Namenskonventionen

Gruß Jürgen

W
windowsformfrage Themenstarter:in
6 Beiträge seit 2010
vor 13 Jahren

@Sebastian
Das ist eine gute Frage. Ich lese zur Zeit das Buch: Einführung in C# - Bernhard Volz. Interfaces sind dort auch ein Thema. Zwar wird beschrieben wie man welche deklariert und implementiert, aber in welchem Zusammenhang man sie gebraucht konnte ich nicht herusfinden. Dennoch kenne ich viele Sachen wie man sie deklariert etc. aber Wann und Wie man sie anwendet ist als Anfänger schwer herauszufinden, da auch auch niemanden persönlich kenne, der C# beherrscht.
Mfg Timon