Controls auslesen

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Meteor300.

    Controls auslesen

    Hey,
    ich hab da so ein Programm geschrieben und in der Form1 soll sich auf Button1 klick die Form2 öffen was ich auch geschafft hab. Aber solang die From2 geöffnet ist soll sich der Button unsichtbar machen, weil ich sonst die From2 immer wieder Öffnet und das soll sie nicht. Wenn man sie form wieder schließt dan soll der Button1 wieder sichtbar sein.

    wie Frägt man also ab ob in Me.Controls die From2 vorhanden ist ??

    mfg Meteor300

    Quellcode

    1. Public Class Form1
    2. Dim frm_stopuhr As New Form_Stopuhr
    3. Private Sub Button_stopuhr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_stopuhr.Click
    4. frm_stopuhr.TopLevel = False
    5. frm_stopuhr.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedToolWindow
    6. frm_stopuhr.Location = New Point(150, 50)
    7. frm_stopuhr.Visible = True
    8. Me.Controls.Add(frm_stopuhr)
    9. End Sub
    10. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    11. 'If me.controls.items = frm_stopuhr Then
    12. 'Button_stopuhr.Visible = False
    13. 'Else : Button_stopuhr.Visible = True
    14. 'End If
    15. End Sub
    16. End Class
    Versuch es mal so


    VB.NET-Quellcode

    1. If Form2.enabled = True Then
    2. Button1.visible = false
    3. else
    4. Button1.visible = true
    5. End If

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

    @King Hacker: Warum nicht Button1.Visible=not Form2.enabled? Erspart die eine IF-Abfrage und 4 Zeilen Programmcode.
    @Meteor300:
    Versuche, ereignisorientiert zu arbeiten. Wenn du einen Button drückst, sagt dir VB das, indem es ein Ereignis auslöst. Mit einem Timer zu arbeiten ist, wie wenn deine Hand auf der Hupe parkt. Unnötiges Dauerfeuer!

    Dort, wo die zweite Form geöffnet wird, den Button verstecken.
    Wenn die zweite Form geschlossen wird, kannst du den Button wieder erscheinen lassen.
    In diesem Fall: Timer ist böse
    @KingHacker: danke, aber des hab ich auch schon.
    wenn ich dan die form2 schließ setzt es die eigenschaft Button.visible nicht auf true.

    @der Kurt: ich hab noch nicht so viel ahnung von Programmiren :) aber danke und des mit dem not ist auch krass

    aber gib es nicht irgendwie so einen Befehl mit dem man überprüfen kan ob die Form2 in den Controls vorhanden ist ??
    So kann es funktionieren

    VB.NET-Quellcode

    1. Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    2. Button1.visible = true
    3. End Sub
    4. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. Button1.visible = false
    6. End Sub
    Meinst du dass habe Button1 durch Form1.Button1 ersetzt!!!
    Diesen Code in Form2 kopieren:

    VB.NET-Quellcode

    1. Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    2. Form1.Button1.visible = true
    3. End Sub
    4. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. Form1.Button1.visible = false
    6. End Sub

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

    nein auch nicht weil ich in der Form1
    den Befehl

    VB.NET-Quellcode

    1. Me.Controls.Add(frm_stopuhr)

    und wen ich die Form2(frm_stopuhr) schließ zeigt sich der Button1 zwar wieder, aber er hat sich gemerkt das in Me.Controles noch die Form2(frm_stopuhr) ist und da kommt dan der FEHLER!

    der ich davor noch alle Controls lösch dan zeigt es mir den Button1 auch nicht mehr an.

    also wie kann man einzelnt die frm_stopuhr aus Controls löschen??
    Ja viel sinn hat das alles echt nicht aber ich hab halt bisschen rumprobiert und fand es irgendwie cool.
    - aber wie kann man eigtlich einzelne Controls löschen oder ist das überhaupt möglich.
    - oder kann man sich die Controls in einer Checklist ausgeben lassen und sie einzelnt aktiviren oder deaktiviren.
    wie in dem Menü "Ansicht"
    das erste von Kinghacker müsste doch funktionieren.
    i welchm Event hast du es denn?
    machs doch mal in das EnabledChanged-Event von Form2

    Gruß Vitox


    Edit:
    einzelne Controls löschen:
    Me.Controls.Remove(deinControl)

    fürs 2.
    klar kannst du das,
    lass einfach alle per Namen in einer Checklistbox anzeigen, und sie je nach Checkstatus deaktivieren oder aktivieren
    Generell deutet das dynamische Erstellen oder Entfernen von Controls auf ein verfehltes Design hin. Es ist mir bisher in jedem Falle gelungen, das GUI im Designer zu erstellen, und zur Laufzeit dann zu nutzen, ohne weiter dran rumfummeln zu müssen.

    Wenn ich unterschiedlich viele Daten habe, verwende ich ListenControls - die können beliebig lang werden - dafür haben sie die Scrollbar eingebaut. :D
    Danke,
    aber wie füge ich die Controls der Form1 zur CheckedListBox1 der Form2 dazu


    CheckedListBox1.Controls.Add(Form1.Controls.Item)

    Ich glaub des Item ist falsch ??


    mach es nicht mit dem Control selber, sondern nur mit dem Namen:

    For Each cl As Control In Me.Controls
    CheckedListBox1.Controls.Add(cl.Name)
    Next

    Gruß Vitox