mehrere panels

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Unwesen.

    mehrere panels

    VB.NET-Quellcode

    1. Public Sub vButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    2. Try
    3. If Not panel Is Nothing Then
    4. Dim files As String = ""
    5. For Each con As Control In panel.Controls
    6. If TypeOf con Is Label Then
    7. files = con.Text & ".lnk"
    8. End If
    9. Next
    10. Process.Start(Application.StartupPath & "\Daten\Desktop\" & files, vbMaximizedFocus)

    so jetzt möchte ich das wenn mehrere panels bestehen man auch das andere prog ausführen kann :whistling:
    Meinst Du es so?

    VB.NET-Quellcode

    1. If panel IsNot Nothing Then
    2. Dim files As String = ""
    3. For Each con As Control In panel.Controls
    4. If TypeOf con Is Label Then
    5. files = con.Text & ".lnk"
    6. Process.Start(Application.StartupPath & "\Daten\Desktop\" & files, vbMaximizedFocus)
    7. End If
    8. Next
    9. End If
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    nein also dieser button ist dafür ein prog zu starten was voher ausgewählt wird mit ne open file dialog.

    VB.NET-Quellcode

    1. Public Sub newverknüpfung(ByVal Name As String, Optional ByVal pfad1 As String = "", Optional ByVal locx As String = "", Optional ByVal localnew As Boolean = False, Optional ByVal locy As String = "", Optional ByVal image1 As String = "")
    2. If localnew = True Then
    3. CreateShortcut(Application.StartupPath & "\Daten\Desktop\" & Name & ".lnk", pfad1)
    4. End If
    5. Try
    6. If localnew = False Then
    7. Dim xts = ReadLine(Application.StartupPath & "\Daten\Desktop\" & Name & ".vsettings" & ".set", 2)
    8. Dim yts = ReadLine(Application.StartupPath & "\Daten\Desktop\" & Name & ".vsettings" & ".set", 3)
    9. pfad1 = ReadLine(Application.StartupPath & "\Daten\Desktop\" & Name & ".vsettings" & ".set", 4)
    10. image1 = ReadLine(Application.StartupPath & "\Daten\Desktop\" & Name & ".vsettings" & ".set", 5)
    11. x = Val(xts)
    12. y = Val(yts)
    13. Else
    14. x = Cursor.Position.X
    15. y = Cursor.Position.Y
    16. End If
    17. 'Erstellt neues Label für den Dateinamen
    18. Dim filenamelabel As New Label
    19. filenamelabel.Text = Name
    20. filenamelabel.Location = New Point(3, 53)
    21. filenamelabel.Size = New Size(58, 13)
    22. filenamelabel.AutoSize = False
    23. filenamelabel.TextAlign = ContentAlignment.MiddleCenter
    24. 'Erstellt den Button für die Textdatei
    25. Dim pb As New Button
    26. pb.Size = New Size(64, 50)
    27. pb.Location = New Point(0, 0)
    28. If image1 = "" Then
    29. pb.Text = "Ver."
    30. Else
    31. pb.Image = Image.FromFile(image1)
    32. End If
    33. 'Erstellt das Panel
    34. Dim txtfile As New Panel
    35. Dim panelname As String = txtfile.Name
    36. txtfile.Size = New Size(65, 72)
    37. txtfile.Location = New Point(x, y)
    38. txtfile.Controls.Add(filenamelabel)
    39. txtfile.Controls.Add(pb)
    40. txtfile.ContextMenuStrip = Mapple.vfile_cm
    41. txtfile.Visible = True
    42. txtfile.BackColor = Color.Transparent
    43. txtfile.Parent = Mapple
    44. AddHandler pb.Click, AddressOf Mapple.vButton_Click
    45. AddHandler txtfile.MouseDown, AddressOf Mapple.Panel_MouseDown
    46. If localnew = True Then
    47. writefile(Name, pfad1, txtfile.Location.X, txtfile.Location.Y, image1) 'Schreibt eine neue Datei
    48. End If
    49. TabControl1.SelectedTab = TabPage1
    50. For Each con As Control In Me.Controls
    51. If TypeOf con Is TextBox Then
    52. con.Text = ""
    53. End If
    54. Next
    55. Me.Close()
    56. Catch ex As Exception
    57. newfehler(ex.Message, "98", "Mapple Neue-Verknüpfung")
    58. End Try
    59. End Sub

    aber wenn ich 2 labels hab startet dieses label auch das prog was label 1 zugewiesen ist ;) :cursing:ich verzweifel bald :wacko:

    VB.NET-Quellcode

    1. For Each con As Control In panel.Controls
    2. If TypeOf con Is Label Then
    3. files = con.Text & ".lnk"
    4. End If
    5. Next
    6. Process.Start(Application.StartupPath & "\Daten\Desktop\" & files, vbMaximizedFocus)
    Hier ist files immer der Text des letzten Labels. Ist es das, was Du willst?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Hier ist files immer der Text des letzten Labels.
    Meinst Du den Inhalt von Labels, wenn Du Panels sagst?
    Es passiert stets dasselbe, solange der Text im letzten Panel nicht geändert wird.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Sorry aber ich verstehe nicht so ganz was du vor hast.

    Du willst 2 Programme schreiben die mittels Panels gestartet werden ??

    Gut ... ich habe mal auf das Vid geguckt.

    Auch wenn es jetzt irgendwie blöd klingt, aber in dem Vid verknüpfst Du die beiden Panels mit der Hearts.exe und daher erscheint auch beim Klick auf allen beiden Panels nur das Spiel Heart. Also in dem Sinne passiert genau das was passieren muss ... es wird jeweils die eingerichtete Verknüpfung aufgerufen.

    Vielleicht mal ein Vid erstellen wo die Verknüpfungen dann auch auf unterschiedliche Programme zeigen?

    Gruß

    Rainer

    raist10 schrieb:

    Gut ... ich habe mal auf das Vid geguckt.

    Auch wenn es jetzt irgendwie blöd klingt, aber in dem Vid verknüpfst Du die beiden Panels mit der Hearts.exe und daher erscheint auch beim Klick auf allen beiden Panels nur das Spiel Heart. Also in dem Sinne passiert genau das was passieren muss ... es wird jeweils die eingerichtete Verknüpfung aufgerufen.

    Vielleicht mal ein Vid erstellen wo die Verknüpfungen dann auch auf unterschiedliche Programme zeigen?

    Gruß

    Rainer

    nein ich hatte 1 wieder gelöscht weil ich es auch minecraft genannt habe und dann nochmal neu erstellt aber eine ist mit minecraft verbunden guck mal genau hin so dumm bin ich auch nicht X(
    @ goraxer

    Dann siehst Du Dir dann ein anderes Vid an wie ich.

    Du weisst der Verkn. Minecraft zuerst Setup342.exe (oder so) zu, dann bei 0:44 weisst Du der Verknüpfung Minecraft die Hearts.exe zu und danach löscht Du eine Minecraft-Verknüpfung, eben die zu Setup342.exe. Danach erstellst Du die Verknüpfung Hearts und weisst der auch die Hearts.exe zu und im Anschluß löscht Du die Verknüpfung Hearts wieder und erstellst sie wieder auf die Hearts.exe neu. Dann kommen Deine Aufrufe der Verknüpfung.

    Sorry, aber auf dem verlinkten Video kann ich an keiner einzigen Stelle eine Verknüpfung zu minecraft.exe sehen/erkennen.

    Ich sage ja nicht das Du blöd bist, sondern nur das was ich auf dem Vid sehe. Gucke es Dir selber nochmal in Ruhe an. ;)

    Gruß

    Rainer
    Bin net 100% sicher, was ich auf dem Video gesehen habe, aber wenn es das ist was ich denke, habe ich das so gelöst:
    Spoiler anzeigen

    Der Code ist werde optimiert noch fertig, aber zur demonstration reicht es sicherlich aus..

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim maxAnzahl As Integer = 9
    3. Dim Pan(maxAnzahl) As Panel
    4. Dim NextPanel As Integer
    5. Dim CurrentPosition As Point
    6. Dim Locations(maxAnzahl) As Point 'Array für die Locations
    7. Dim Zielpfade(maxAnzahl) As String
    8. Dim Verknüpfungsnamen(maxAnzahl) As String
    9. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. 'Lade ggf die Werte aus ner Ini oder so; für das Beispiel beginnt alles bei 0
    11. NextPanel = 0
    12. End Sub
    13. Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
    14. CurrentPosition = New Point(e.Location) 'Cursorposition holen
    15. End Sub
    16. Dim ofd As New OpenFileDialog
    17. Private Sub NeuToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NeuToolStripMenuItem.Click
    18. 'Neues Panel erzeugen
    19. 'Schwarz, 48x48 Pixel, an Position wo Contextmenü aufgerufen wurde..
    20. Pan(NextPanel) = New Panel
    21. Controls.Add(Pan(NextPanel))
    22. Pan(NextPanel).Name = "Pan" & NextPanel.ToString
    23. Pan(NextPanel).Tag = NextPanel
    24. Pan(NextPanel).Size = New Size(48, 48)
    25. Pan(NextPanel).BackColor = Color.Black
    26. Pan(NextPanel).Location = New Point(CurrentPosition)
    27. Pan(NextPanel).ContextMenuStrip = Me.ContextMenuStrip2
    28. AddHandler Pan(NextPanel).Click, AddressOf Pan_Click
    29. ofd.Filter = "Exe|*.exe"
    30. If ofd.ShowDialog = DialogResult.OK Then
    31. 'Pfad
    32. Zielpfade(NextPanel) = ofd.FileName
    33. 'Dateinamen abtrennen
    34. Verknüpfungsnamen(NextPanel) = Zielpfade(NextPanel).Substring(Zielpfade(NextPanel).LastIndexOf("\") + 1, Zielpfade(NextPanel).Length - Zielpfade(NextPanel).LastIndexOf("\") - 1)
    35. End If
    36. NextPanel += 1
    37. End Sub
    38. Dim CtxSource As Integer
    39. Public Function FromWhere(ByVal sender As System.Object, ByVal e As System.EventArgs) As Integer
    40. 'Ermittelt, von wo das Contextmenü aufgerufen wurde;
    41. CtxSource = ContextMenuStrip2.SourceControl.Tag
    42. Return CtxSource
    43. End Function
    44. Dim PanelNummer As Integer
    45. Private Sub Pan_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    46. PanelNummer = DirectCast(sender, Panel).Tag
    47. MessageBox.Show("Klick auf Panel " & PanelNummer.ToString)
    48. End Sub
    49. Private Sub mnuRenamePanel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuRenamePanel.Click
    50. PanelNummer = FromWhere(sender, e)
    51. MessageBox.Show("Rename Eintrag " & PanelNummer.ToString & vbNewLine & _
    52. "Pfad:" & Zielpfade(PanelNummer) & vbNewLine & _
    53. "Name:" & Verknüpfungsnamen(PanelNummer))
    54. End Sub
    55. Private Sub mnuDeletePanel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuDeletePanel.Click
    56. PanelNummer = FromWhere(sender, e)
    57. MessageBox.Show("Delete Eintrag " & PanelNummer.ToString & vbNewLine & _
    58. "Pfad:" & Zielpfade(PanelNummer) & vbNewLine & _
    59. "Name:" & Verknüpfungsnamen(PanelNummer))
    60. End Sub
    61. End Class


    Hab dir das als lauffähiges Project als PN gesendet..