Formen Komunizieren lassen?

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von MultiCoder.

    Formen Komunizieren lassen?

    Hi leute bin neu hier im forum und hab für ein spie ein Multi Tool erstellt mit VB 2010 nur hab ich ein problem ich habe in:

    Form1 einen Options Button der form 2 Öffnet dort ist eine Checkbox für ein Auto Update Kontroll Code.(Die Checkbox [True or false]Option wird in einer ini Gespeichert).

    das problem ist nur das ich immer erst form2 öffnen muss da mit der code startet. ich möchte es aber so haben das ich form1 öffne und er den code Nach der gewählten option ausführt.

    hoffe mal das ist verständlich habs nit so mit erkläre von probleme schriftlich. :whistling:

    gruß Multi Coder.
    hi danke für die hilfe werde mir den link mal anschauen und ne frage wie geht das mit dem Form vererben

    Edit: hi also das hat beides nix geholfen.kennt wer noch ne andere möglichkeit das von form2 in form1 zu senden ohne form2 ohne sie ein ma zu öffnen.

    Edit by der_Kurt:
    Bitte keine Doppelposts
    * Beiträge zusammengefügt *

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()

    also hier mal bilder wo zeigen sollen was ich meine.

    1.)die start form startet.durch klick auf button optionen öffnet sich form2 (Bild 2)

    2.)also auto update ist angeklickt.jetzt gehe ich wieder in form 1 die über ne if abfrage testet ob die check box checked ist.also ist sie checked soll form 1 so aussehen wie auf bild3

    jetzt kommt das aber.und zwar soll die if abfrage starten ohne das ich form2 nicht geöffnet haben.also sie soll es kontrollieren in dem nur form1 startet.
    Bilder
    • image26.jpg

      86,95 kB, 568×427, 129 mal angesehen
    • image24.jpg

      21,69 kB, 212×180, 216 mal angesehen
    • image25.jpg

      91,06 kB, 568×427, 131 mal angesehen
    Also wenn ich dich richtig verstanden habe, wäre das ein Fall für My.Settings.
    Du öffnest Form2 und stellst die Optionen ein.
    Im FormClosing-event der Form2 speicherst du die Einstellungen in den My.Settings mit Save.
    In Form1 greifst du nach My.Settings.Reload auf die gespeicherten Einstellungen zu. Diesen Zugriff kannst du im FormLoad und im Form1_Activated-Event ausführen.
    Fiel Fergnügen
    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    ich hab zwar noch nie damit gearbeitet werde es aber versuchen.

    so hier mal ein auszug aus form2 code:

    VB.NET-Quellcode

    1. Private Sub KryptonCheckBox1_CheckedChanged(ByVal sender As
    2. System.Object, ByVal e As System.EventArgs) Handles
    3. KryptonCheckBox1.CheckedChanged
    4. If KryptonCheckBox1.Checked Then
    5. My.Settings.check1 = KryptonCheckBox1.Checked
    6. My.Settings.Save()
    7. My.Settings.Reload()
    8. Else
    9. My.Settings.check1 = KryptonCheckBox1.Checked
    10. My.Settings.Save()
    11. My.Settings.Reload()
    12. End If
    13. End Sub


    und
    hier die abfrage aus form1 und ja die abfrage geht. nur merkt die
    settings nicht wenn die checkbox unchecked ist wie bekomme ich das
    hin????

    VB.NET-Quellcode

    1. If My.Settings.check1 = Form13.KryptonCheckBox1.Checked Then
    2. Dim version = My.Application.Info.Version



    Edit by der_Kurt:
    Bitte keine Doppelposts
    * Beiträge zusammengefügt *

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()

    Warum so schwer, wenn es auch einfach geht?

    Die einfachste Methode wäre folgende:
    Wenn man auf das X von Form2 schließt, dann wird es nur versteckt
    Die Werte kannst du dir dann z.B. so holen ->

    VB.NET-Quellcode

    1. If Form2.CheckBox.Checked then
    2. 'Dein Code
    3. End If



    Eine bessere Methode wäre:
    Du legst bei Form1 neue globale Variablen an (Du musst aber drauf achten, dass es die Public sind)
    Sieht so aus->

    VB.NET-Quellcode

    1. Public deineVar1 As Boolean = false


    Wenn jetzt der User eine Checkbox anklickt, dann änderst du die Variable dementsprechend (Dank Public brauchst du auch kein "Form1" dazu schreiben)

    VB.NET-Quellcode

    1. 'Im Event Checkbox ValueChanged oder sowas
    2. If Checkbox1.Checked then
    3. deineVar1 = true
    4. Else
    5. deineVar1 = false
    6. End If





    Hoffe ich konnte dir einen Denkanstoß geben :D







    Mfg.
    SAR
    ich glaube Vatter meint das anders :D
    Form1-Code

    VB.NET-Quellcode

    1. Private sub Form1_Load (sender...)
    2. My.Settings.Reload ()
    3. End Sub

    oder muss man "Form2.Settings. Reload ()" setzen?

    VB.NET-Quellcode

    1. Private Sub Form2_Closed (sender ...)
    2. My.Settings.Save ()
    3. End Sub


    hab das jetzt aus dem Kopf geschrieben wie ich denke wie es Vatter meint
    habe noch nicht mit My.Settings.Save gearbeitet.
    Aber die Events (Form1_Load; Form2_Closed) müssten nach der Aussage von Vatter stimmen ;)
    Hast es doch schon fast: My.Settings.check1 gibt den gespeicherten Status deiner Checkbox wieder.
    Also:

    VB.NET-Quellcode

    1. If My.Settings.check1 Then
    2. Dim version = My.Application.Info.Version

    vorher mußt du natürlich bei der Rückkehr auf Form1 (Activate-Event der Form) die Settings mit Reload neu laden.

    SAR-71 schrieb:

    Warum so schwer, wenn es auch einfach geht?
    Weil der TE die Einstellungwen für einen Programmneustart speichern möchte (hab ich zumindest so verstanden)

    Anderer Weg:
    öffentliche Variablen (Klasse mit Public Shared Dingsbums) festlegen oder in Form1 Public Variablen (nich so schön und Zugriff mit Form1.Dingsbums) und dann erst im Form1_Closing-Event die Variable in My.Settings speichern.
    Bei Neustart Reload im FormLoad und Rück-übertragen der Settings in die Variablen.

    Bei vielen Einstellungen vielleicht über eine serialisierbare Klasse nachdenken...Ab hier
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    MultiCoder schrieb:

    so also das hat geklapt aber er speichert den hacken nicht und wie bekomme ich ein uncheck hin also wenn man das auto update wieder weck haben will???

    Eine sehr schöne Fehlerbeschreibung... So ohne Code, ohne nähere Beschreibung und mit Hacken (für zum Rüben hacken oder für die Schuhe? :D )
    Zeig ma n bisserl Code, vielleicht fällt dann einem was ein.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    also hier mal dr code der den check harken bei der Checkbox speichern soll.

    VB.NET-Quellcode

    1. Private Sub Form13_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    2. If KryptonCheckBox1.Checked Then
    3. My.Settings.check1 = KryptonCheckBox1.Checked
    4. My.Settings.Save()
    5. My.Settings.Reload()
    6. End If
    7. End Sub


    und das andere problem ist wenn die checkbox dann check ist soll der harken sichtbar bleiben bei programm neustart.aber das tut er nich denn irgentwie soll ja der code vom nutzer wieder gestoppt werden können.
    Wenn die Checkbox entsprechend der gespeicherten Settings gecheckt sein soll, mußt du Ihr das im FormLoad oder sonstewo sagen.

    Oder nimmst ein Crystal Ball-Control, dass im Parallelspace des Arbeitsspeichers die Einstellungen selbstständig erahnt. :D
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Gebe der frmSettings ein event:

    VB.NET-Quellcode

    1. Public Event SettingsChanged()


    In der Main machst du dann:

    VB.NET-Quellcode

    1. Public Class frmMain
    2. Private WithEvents pSettings As frmSettings 'Zweite Form
    3. Private Sub frmMain_Load(...)
    4. pSettings = New frmSettings()
    5. pSettings.Show()
    6. pSettings.Hide()
    7. End Sub
    8. Private Sub ReloadSettings() Handles pSettings.SettingsChanged
    9. 'Hier die änderungen abrufen / aktualisieren
    10. End Sub
    11. End Class


    Wenn sich die Einstellungen ändern, einfach

    VB.NET-Quellcode

    1. RaiseEvent SettingsChanged


    Dein Code ist nicht gerade sehr sitlsicher. Hier ein paar Links

    Forumsintern:
    [Allgemein] Entwickler-Ressourcen und Tools, Bücher und WebCasts
    [Allgemein] Grundlagen: Benennung von Controls (Update: 24.10.2010)
    [VB.NET] Beispiele für guten und schlechten Code (Stil)

    Galileo Openbooks:
    Galileo Openbook VB.NET
    Galileo Openbook Einstieg in VB 2008
    Galileo Openbook Einstieg in VB 2010
    hi danke für eure hilfe also hab das anzeige problem gelöst nur hab ich ein anderes.

    und zwar hier mal der Code:

    VB.NET-Quellcode

    1. Private Sub Form13_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    2. If KryptonCheckBox1.Checked = True Then
    3. My.Settings.check1 = KryptonCheckBox1.Checked
    4. My.Settings.Save()
    5. My.Settings.Reload()
    6. End If
    7. End Sub
    8. Private Sub Form13_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    9. KryptonCheckBox1.Checked = My.Settings.check1
    10. End Sub


    der macht fasst was er soll.

    nur soll der code aus form 10 nicht ausgeführt werden wenn die checkbox aus form13 ungechecked ist.

    so rufe ich in form 10_load den code ab:

    VB.NET-Quellcode

    1. If My.Settings.check1 Then
    2. Dim version = My.Application.Info.Version
    3. Try
    4. Dim updated = New Version(

    nur speichert die Settings das nicht als unchecked denn der code wird immer ausgeführt ob jetzt checked ist oder nicht.

    hoffe ihr könnt mir dabei helfen am sonsten klappt alles.
    :) ;(