Laden...

Forenbeiträge von didiwerdau Ingesamt 11 Beiträge

15.09.2010 - 09:42 Uhr

Nochmal vielen Dank euch beiden.

Es hat zwar etwas gedauert, aber jetzt habe ich es verstanden und auch schon konsequent umgesetzt. Diese Vorgehensweise löst so einige Probleme.

14.09.2010 - 15:27 Uhr

Sorry, dass ich so auf der Leitung stand. Habs jetzt gerafft. Muß mich zwar noch etwas damit befassen, warum es funktioniert, aber es funktioniert erstmal. Danke.

@FZelle: du meinst, dass das Form2 ein Property hat und Form1 beim Close auf die Property von Form2 zugreift, oder? Ich hatte es also genau anders herum und habe da natürlich Form1 in Form2 bekannt machen müssen.

14.09.2010 - 14:57 Uhr

bin ehrlich gesagt noch nicht durch den Post durch. Was Properties sind weiß ich schon.

Meine aktuelle Vorgehensweise ist:

  1. ein Property in Form1


ClassDaten Daten = new ClassDaten();

public string _User
        {
            get { return Daten._User; }
            set { Daten._User = value; }
        }
  1. Aufruf Form2:

Benutzer_registrieren kein_user = new Benutzer_registrieren(this);
                kein_user.StartPosition = FormStartPosition.CenterScreen;
                kein_user.ShowDialog();

  1. Die Form2 selbst:

public partial class Benutzer_registrieren : Form
    {
        private Form aufrufendeForm;

        public Benutzer_registrieren(Form f)
        {
            aufrufendeForm = f;
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Benutzer_speichern();
        }

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                Benutzer_speichern();
            }
        }

        private void Benutzer_speichern()
        {
            if (textBox1.Text != "")
            {
                ((Form1)aufrufendeForm)._User = textBox1.Text;
                this.Close();
            }
        }
    }

Das heißt doch, dass der Aufrufer auf die Property zugreift, oder irre ich mich da.

Mit der Übergabe von Form1 habe ich das doch aber in Form2 bekannt gemacht, was ja vermieden werden soll.

Also nehme ich an, dass du das anders gemeint hast. Wäre schön, wenn du mir da weiter helfen kannst.

14.09.2010 - 13:39 Uhr

Oder Properties, die der Aufrufer selber abholt.

Das mußt du mir erklären.

@Cat: versuche gerade die FAQ nachzuvollziehen.

14.09.2010 - 11:56 Uhr

Ok, was wäre denn das best practice für folgende Situation?

Ein Programm wird mit Zugriffsregelungen versehen. Das heißt, der Benutzer muß sich vor verwendung des Programms anmelden.

Ein Anmelde-Formular wird als Form2 angelegt.

Der angemeldete Benutzer wird aber dann auch in Form1 benötigt.

Wenn Form2 das Form1 nicht kennt, kann ich doch von hier aus auch den Benutzer nicht an das Form1 zurückgeben, oder?

14.09.2010 - 11:05 Uhr

Hallo,

nachdem meine Ursprüngliche Vorgehensweise ja garnicht so verkehrt scheint und ich trotzdem große Probleme mit dem Handeln von Parametern hatte, habe ich mir nochmal Gedanken über meine generelle Vorgehensweise gemacht und festgestellt, dass ich einiges an der Struktur ändern kann und dann eigentlich (zum jetzigen Zeitpunkt) keine Klassen mehr übergeben muß.

Dazu habe ich mich entschieden, dass ich an Formulare, in denen ich Daten aus dem Hauptformular benötige, nur noch das Hauptformular übergebe.

Im Hauptformular erzeuge ich die Instanz der Klasse und über public Properties im Hauptformular greife ich dann auf die Klasse zu.

Des weiteren habe ich viele Klassen gecleant. Hier bin ich einen falschen Weg gegangen. Anstatt Parameter an Funktionen bei deren Aufruf zu übergeben, hatte ich beim instanziieren der Klasse die Datenklasse übergeben, über die sich die Funktionen dann die benötigten Werte gezogen haben. Das ist natürlich Käse. Wenn ich eine Funktion aus einer Klasse im Hauptformular aufrufe, dann übergebe ich natürlich die Werte aus dem Hauptformular direkt an die Funktion.

Also vielen Dank für die Denkanstöße.

13.09.2010 - 16:05 Uhr

Vielen Dank für eure Antworten.

Den Tipp mit der Sammelklasse werde ich mir zu Herzen nehmen. Danke dafür.

13.09.2010 - 15:37 Uhr

Hallo zusammen,

ich tu mich irgendwie schwer im Umgang mit Klassen. Generell bekomme ich es zwar hin, denke aber, dass meine Vorgehensweise bei größeren Projekten nicht praktikabel ist. Deshalb hoffe ich, dass Ihr mir ein wenig auf die Sprünge helfen könnt.

Angenommen, ich habe in einem Programm ein Form1 und Form2 und eine Class1, in der Parameter stehen, die für die Verarbeitung notwendig sind.

Meine Vorgehensweise war bis jetzt immer diese:

in Form1 erzeuge ich eine Instanz der Klasse Class1 und übergebe die beim Aufrufen von Form2. Damit kann ich dann ja auch von Form2 aus die Daten von der Instanz von Class1 verwenden und bearbeiten.

Solange es sich um so wenige Klassen handelt, mag das noch gehen, aber wenn man mehrere Klassen verwendet, kann ich mir nicht vorstellen, dass man für jeden Aufruf eines neuen Formulars alle Klassen mit übergibt.

Könnt Ihr mir sagen, wie sowas normalerweise aufgebaut wird?

01.10.2009 - 07:47 Uhr

Danke, dann werde ich mal schauen, ob sich da eine andere Lösung finden lässt

30.09.2009 - 13:42 Uhr

Wenn ich das auf die schnelle richtig verstanden habe, dann ist das dazu da um eigene Funktionen in Excel zur Verfügung zu stellen.

Bei mir ist es anders. Ich benutze eine Excel-Formel die ich per C# automatisiert mit den richtigen Parametern fülle.
Ich entwickle mit Office 2007 und C# 2008. Wenn jetzt auf eine neue Office-Version umgestellt wird, die diese Formel nicht mehr enthält oder mit anderen Parametern gefüttert werden will, dann bekomme ich mit dem Programm ein Problem. Zumal verschiedene Office-Versionen im Unternehmen vorhanden sind. Funktioniert das auch mit diesem Add-In?

30.09.2009 - 12:50 Uhr

Hallo zusammen,

ich automatisiere gerade eine Excel-Tabelle mit C#. Dort wird die Funktion "XINTZINSFUSS" verwendet.

Leider kann man ja nie sicher sein, ob in den verschiedenen Excel-Versionen diese Funktion auch existiert oder noch genau so funktioniert und aufgerufen wird, wie in der des Programmierers.

Kann man z.B. in Form einer Bibliothek solche Excel-Funktionen fest in das Programm integrieren um von der Excel-Version unabhängig zu werden?