Announcement

Collapse
No announcement yet.

WinForm nach speichern neu laden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • WinForm nach speichern neu laden

    Hallo,

    namespace WinTestMidi1
    {
    public partial class EmployeeInsert : Form
    {

    public EmployeeInsert(string sPageName)
    {
    ....

    nun möchte ich,
    nach dem Ereignis "btnSpeichern" die WinForm neu laden,
    am besten "public EmployeeInsert(string sPageName)" aufrufen
    aber ich weis nicht wie...
    Einfach EmployeeInsert("employee") geht nicht..

    Kann mir jemand sagen wir ich die
    "public EmployeeInsert(string sPageName)"
    neu aufrufen kann ? oder geht das nicht?
    Wie lade ich eine WinForm Seite neu? (z.b. nach Speicher-aktion)



    gruß
    Rayman

  • #2
    Du musst vermutlich genauer beschreiben, was Du neu laden willst. Mit btnSpeichernClick() speicherst Du sicher nicht das Formular, sondern bestimmte Inhalte, oder? Und solche Inhalte willst Du neu laden und aktualisiert anzeigen, oder? Also benötigst Du (wenn überhaupt) eine Methode, die Inhalte lädt und dann das Formular auf den neuesten Stand bringt; dafür gibt es die Refresh-Methode.

    Aber Deine Problembeschreibung deutet darauf hin, dass Dir elementare Grundlagen fehlen:
    • "public EmployeeInsert(string sPageName)" ist nicht irgendeine Methode, sondern der Konstruktor. Dieser wird (fast) immer durch "new EmployeeInsert(sPageName)" aufgerufen.
    • Einen Konstruktor innerhalb seiner Klasse aufzurufen, ist aus diesem Grund (fast) immer Quatsch.
    • Eine beliebige Methode wird ohne "public" und "string" (beim Parameter) aufgerufen.
    • "Wie lade ich eine WinForm Seite neu?" Was verstehst Du denn unter einer "WinForm Seite" - ein spezielles Formular, eine TabPage für eine TabControl, oder...? Ein nicht (mehr) existierendes Formular muss zunächst neu erzeugt werden. Ein Formular wird durch Show() oder ShowDialog() oder Visible=true aufgerufen. Bestimmte Inhalte werden wahlweise innerhalb des Formulars oder von außerhalb durch zugehörige Methoden neu geladen.

    Für Grundlagen bieten sich z.B. OpenBook C# und OpenBook Visual C# an.

    Gruß Jürgen

    Comment


    • #3
      ja, ich speichere nur Daten.
      Und ich möchte nach dem Speichern das Formular wieder in den Ursprungszustand setzen.
      Und das würde am besten gehen, wenn ich das nochmal neu laden würde,

      so als ob man im Menu das "Click Ereignis" nochmal auslösen würde


      ich habe die Menüelemente in dem Midi-Main form deffiniert und
      die Änderungen sind im Midi-child
      ich weis nicht wie ich das Menü-click ereignis aufrufen kann
      um die Child-form neu zu laden.

      die Refresh Methode hilft an dieser Stelle nicht, weil bestimmte Element mir ReadOnly versehen wurden
      und erst ein neues Aufrufen der Seite setzt alles wieder in den Normalzustand (und lädt gleichzeitg die geänderten Daten neu)


      Wenn man den Konstruktor nicht in seiner Klasse aufrufen kann, dann
      Denke ich, muss ich den Code aus dem Konstruktor in eine Klasse packen.

      void EmployeeInsert (string sPageName)
      ...


      die Klasse kann ich dann aus dem Konstruktor und später nach dem Speichern wieder aufrufen.

      ... bin aber gerne auch für andere Vorschläge offen.

      Danke für die Hilfe!

      gruß
      Rayman

      Comment


      • #4
        Meinst Du vielleicht MDI statt Midi? Midi hat doch mit WinForms nichts zu tun.

        Zu den Grundlagen gehört auch zu wissen, was eine Klasse ist und was eine Methode:
        die Klasse kann ich dann aus dem Konstruktor und später nach dem Speichern wieder aufrufen.
        Es ist vernünftig, das "Laden" (bzw. Neuladen) von Inhalten in eine eigene Methode (nicht: Klasse) innerhalb desselben Formulars (und jedes Formular ist eine Klasse) auszulagern; dann kann diese Methode in der Tat von verschiedenen Stellen aus aufgerufen werden. Dies ist übrigens ein Grundsatz: alles, was mehrfach (an verschiedenen Stellen) verwendet wird, wird getrennt codiert.

        Zu den erweiterten Grundlagen gehört auch, dass unter NET getrennt wird: die externe Speicherung von Daten z.B. in einer Datenbank, die interne Zwischenspeicherung und Verarbeitung von Daten (z.B. in DataSet/DataTable oder List<myClass> o.a.), die Anzeige von Daten (z.B. in DataGridView oder TextBoxen usw.). Ebenso werden dafür verschiedene Klassen verwendet; und damit hat auch das Formular mit dem Neuladen von Inhalten nichts zu tun, sondern ruft lediglich eine Methode der Klasse "Interne Datenverarbeitung" auf.

        Jürgen

        Comment


        • #5
          ja, man lernt nie aus...
          und ich versuche auch zu trenne was geht..

          kann ich den aus dem Child
          das click Ereignis "itemOpenEmployeeInsert" aufrufen?


          namespace WinTestMidi1
          {
          public partial class MainForm : Form
          {


          [STAThread]
          public static void Main()
          {
          ...

          }

          public MainForm()
          {
          ...
          ToolStripMenuItem itemOpenEmployInsert = new ToolStripMenuItem();
          itemOpenEmployInsert.Text = "Employee Insert";
          itemOpenEmployInsert.Click += itemOpenEmployeeInsert;
          itemFile.DropDownItems.Add(itemOpenEmployInsert);
          ...
          }


          void itemOpenEmployeeInsert(object objSrc, EventArgs args)
          {
          ...
          CloseOpenForms();
          EmployeeInsert frm = new EmployeeInsert(objSrc.ToString());
          frm.MdiParent = this;
          frm.Show();
          frm.WindowState = FormWindowState.Maximized;
          ...
          }

          .... ich glaube das geht aber nicht...

          Comment

          Working...
          X