highlighten von Controlls

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von Opelig.

    highlighten von Controlls

    Hallöchen,

    Ich muss zugeben ich bin nicht der Pro in Programmieren, ich lerne es gerade in einer Ausbildung. Leider beschränken sich meine bisherigen Erfahrungen auf c#, c++, php, und bissel Java. Nunja in der Schule wird alles per Express in den Kopf geballert.

    Nun bin ich aber Im Praktikum und Versuche grade eine Aufgabe zu lösen der Anfang ist getan doch jetzt fehlt mir das Verständniss für VB.

    Das Problem ist ich habe eine Form (ich nenne sie hier mal Form1), in dieser Verschiedenste Steuerelemente. Wenn ich nun eine von mir Festgelegt Tastenkombi drücke (in meinem Fall ALT+F9) öffnet sich eine neue Form (ich nenne sie mal Form2) in dieser befindet sich nur eine Listview welche mir sämtliche Steuerelemente der Form1 Aufgelistet werden.

    Nun soll wenn ich eines dieser Steuerlemente Doppelclicke, genau dieses Element in der Form1 Hervorgehoben Werden. Beispielsweise mit einem Roten Rand drumherum.

    Das habe ich bereits und es läuft aber ich bekomme den highlight nicht hin.

    VB.NET-Quellcode

    1. Public Class frm1 Private Sub frm1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. DoToAllControls(frm1)
    3. highlight(frm1)
    4. End Sub
    5. Private Sub DoToAllControls(ByVal m_Control As Control) 'festlegung der aufzählung der ControllsFor Each ctrl As Control In m_Control.Controls
    6. If ctrl.Controls.Count > 0 Then
    7. DoToAllControls(ctrl)
    8. End If
    9. If ctrl.GetType().Equals(GetType(ToolStrip)) Then 'wenn das Controll ein Toolstrip ist
    10. For Each item As ToolStripItem In DirectCast(ctrl, ToolStrip).Items 'wird per Cast das jeweilige
    11. LV1.Items.Add(item.Name) 'Item ausgewählt und gelistet
    12. Next
    13. End If
    14. LV1.Items.Add(ctrl.Name)
    15. Next
    16. End SubPrivate Sub highlight(ByVal frm1 As frm1)
    17. Dim index As Integer = -1
    18. If LV1.SelectedIndices.Count > 0 Then
    19. index = LV1.SelectedIndices(0)
    20. End IfEnd Sub

    Würde mich freuen über Tips und Lösungsansätze.
    In diesem Sinne
    Opelig
    Hi!

    Warum funzt bei dir der Code-Tag nicht? Wennich auf Antworten klickse, und dann aus der IDE Code einpaste, und den VB-Tag drumrum, sieht das viel akkurater aus:

    VB.NET-Quellcode

    1. Public Class frm1
    2. Private Sub frm1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. DoToAllControls(frm1)
    4. highlight(frm1)
    5. End Sub
    6. Private Sub DoToAllControls(ByVal m_Control As Control) 'festlegung der aufzählung der Controlls
    7. For Each ctrl As Control In m_Control.Controls
    8. If ctrl.Controls.Count > 0 Then
    9. DoToAllControls(ctrl)
    10. End If
    11. If ctrl.GetType().Equals(GetType(ToolStrip)) Then 'wenn das Controll ein Toolstrip ist
    12. For Each item As ToolStripItem In DirectCast(ctrl, ToolStrip).Items 'wird per Cast das jeweilige
    13. LV1.Items.Add(item.Name) 'Item ausgewählt und gelistet
    14. Next
    15. End If
    16. LV1.Items.Add(ctrl.Name)
    17. Next
    18. End Sub
    19. Private Sub highlight(ByVal frm1 As frm1)
    20. Dim index As Integer = -1
    21. If LV1.SelectedIndices.Count > 0 Then
    22. index = LV1.SelectedIndices(0)
    23. End If
    24. End Sub
    25. End Class


    Aber dein Vorhaben geht gleich in eine sehr ungute Richtung.
    • Zum einen versemmelst du mit ListView die Möglichkeit von Databinding.
    • Zum anneren werden gnadenlos Daten und Präsentation vermischt - ja wenn Controls die Daten sind, ist da garnixmeh zu retten.
    • Zum dritten hast du dir eine Kommunikation von Form zu Form aufgehalst - ist ziemlich lästig, sowas sauber zu proggen
    • Zum 4. brauchst du einen besonderen Hervorhebe-Mechanismus, und der muß sowohl für Controls funzen, als auch für ToolstripItems (was ja keine Controls sind). Einfach "roter Rahmen drumherum" - sowas gibts nicht.
    Was eher praktikabel wäre, jedes zu berücksichtigende Control auf ein Panel tun, und von dem Panel kann man dann den BorderStyle umstellen.
    Und dann halt nur die Controls laden, die als einzige auf einem Panel liegen.

    Aber im Grunde ist die Aufgabe durch und durch ungeschickt, und ohne praktische Relevanz.
    Das ist genau der Umgang mit Controls, den man lassen sollte.

    Kannst du dir nicht was sinnvolleres vornehmen?

    Edit: (Zur Erinnerung: Ich habe 2 Gegenfragen gestellt, unds nervt mich immer, wenn ich mir die Mühe mache, zu antworten, und meine Gegenfragen sind nicht der Mühe einer GegenAntwort wert)
    hallo,

    Danke für die Antwort. Ja ich könnte mir was sinnvolleres ausdenken Aber das ist nun mal Vorgabe seitens meines Praktikumsbetriebes. Und es liegt nicht im Interesse aufträge abzulehnen. Schliesslich hoffe ich auf einen Arbeitsplatz nach der Ausbildung -.-.

    Zu deiner zweiten frage: Ich weiss nicht warum das so unstrukturiert eingesetzt wurde. hab das Copy Pastet und da war alles im grünen Bereich.

    Das mit den Panels ist ne Idee war ich auch am überlegen. jedoch ist meine Form1 eine Test und bastelform. Wenn das ganze läuft soll es in einem Grossen Projekt (geschätzte 40 unterformen) integriert werden. zum einen zur Fehlerbehebung und zur anderen um den User auf Falsche eingaben in Masken hinzuweisen.
    Also als Entwickler-Tool zur Fehlerbehebung hat das mw. Zukunft. Aber User mit sowas auf Fehl-Eingaben hinzuweisen ist B...t.
    Fehl-Eingaben verhindert man durch ein durchdachtes Validierungs-Konzept.
    Als Entwickler-Tool kannmans noch hingehen lassen, weils da nicht so drauf ankommt, dass, wenn der User das Form verschiebt, dass dann auch die Markierung nachgeführt werden müsste und so Scherze.

    Da Controls nämlich keine einheitliche Markierungs-Methode haben, täte ich nun ein Extra-Form vorschlagen, welches sich jeweils über das Ziel-Control legt. Kannichdir schreiben, ist nicht soo viel.

    Frage: Kennst du die Dokumenten-Struktur-Ansicht im Form-Designer?
    Da sind die Controls in einer Art Treeview gelistet, also man sieht nicht nur alle Controls, sondern auch welches auf welchem aufsitzt, und man kann irrelevante Zweige zuklappen und so Zeugs.
    Wäre das für euch nicht auch von Interesse?
    Leider hatten wir bisher im designer in c# nur mal Schnell ne Fehlermeldung entfernt. ansonsten hab ich noch keinerlei erfahrung damit.

    wenn du mir die genannte Form schreiben Könntest wäre das echt Hammer und ich Dir sehr Dankbar.

    Wie gesagt bei VB ist das für mich ein Sprung ins kalte Wasser.

    Besten Dank für deine Mühe
    Dann solltest du dringend dieses Buch Lesen.

    Und dieses auch: Möglichkeiten der Informationsgewinnung

    Es hat kein Zweck .Net zu proggen, und nicht zu wissen, wie die IDE funktioniert.

    Ausserdem: Such dochmal die DokumentenStruktur:
    Ein Form in den Designer nehmen, dann Menü - Ansicht - weitere Fenster - DokumentenGliederung

    Ich machmich denn mal an son Highlighter
    fennisch ;)

    Ich hab einfach meine MiniKass-Anwendung als Demo genommen, also nicht wundern über den Dataset-Kram, derda drin ist, und zum Markup garnet gebraucht wird.

    Bischen dirty ist auch :

    VB.NET-Quellcode

    1. frmOverView.Close()
    2. frmOverView.Show(Me)


    Das ist SchmuddelCode, der nur in VB.Net geht. frmOverView ist kein Objekt, sondern eine Klasse, also der Bauplan eines Objekts. Aber VB trickst da herum, sodaß man frmOverView.Close() aufrufen kann, bevor man es geöffnet hat. Gugge auch VeryBasics

    In diesem Fall ists aber nützlich, um das OverView-Form von einem Form aufs andere umzustellen ;)
    Dateien

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()

    morschen,

    Ich danke dir schonmal für deine Mühen und deine Hilfe aber so richtig schnackel ich des noch nicht! vielleicht bin ich momentan auch einfach nur zu sehr gestresst und kriegs deshalb nicht in meine rübe. naja wie dem auch sei. so sieht jetzt mein Code aus:

    VB.NET-Quellcode

    1. Public Class frm2
    2. Private Sub frm2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. DoToAllControls(frm1)
    4. highlight(frm1)
    5. End Sub
    6. Private Sub DoToAllControls(ByVal m_Control As Control) 'festlegung der aufzählung der Controlls
    7. For Each ctrl As Control In m_Control.Controls
    8. If ctrl.Controls.Count > 0 Then
    9. DoToAllControls(ctrl)
    10. End If
    11. If ctrl.GetType().Equals(GetType(ToolStrip)) Then 'wenn das Controll ein Toolstrip ist
    12. For Each item As ToolStripItem In DirectCast(ctrl, ToolStrip).Items 'wird per Cast das jeweilige
    13. LV1.Items.Add(item.Name) 'Item ausgewählt und gelistet
    14. Next
    15. End If
    16. LV1.Items.Add(ctrl.Name)
    17. Next
    18. End Sub
    19. Private Sub highlight(ByVal frm1 As frm1)
    20. Dim index As Integer = -1
    21. If LV1.SelectedIndices.Count > 0 Then
    22. index = LV1.SelectedIndices(0)
    23. End If
    24. LV1.Select()
    25. End Sub
    26. Private Sub markit(ByVal sender As System.Object, ByVal e As System.EventArgs)
    27. InitializeComponent()
    28. With New Control
    29. .Dock = DockStyle.Fill
    30. .BackColor = Color.Black
    31. Me.Controls.Add(LV1)
    32. End With
    33. End Sub
    34. Private Sub Markup(ByVal bounds As Rectangle)
    35. With bounds
    36. Me.Bounds = New Rectangle(.X - 4, .Y - 4, .Width + 9, .Height + 9)
    37. End With
    38. End Sub
    39. End Class


    blöd nur es macht noch immer nicht was es soll. im mom lese ich mich in den treeview ein. Wenn du aber fehler findest, immer her damit.
    ListView taugt nicht für sowas - (im Grunde taugtes zu fast garnix). Hier taugt es nicht, weil es keine Referenz auf die zu highlightenden Controls verwalten kann.

    Keine Ahnung, was frm2 sein soll - was soll das machen?

    Erst recht keine Ahnung, was du also mit "macht noch immer nicht was es soll." meinen magst.

    Magst du nicht, bevor du etwas nichtfunzendes reparieren tust, dir ein Verständnis erarbeiten von dem, was funzt (ich meine meine Lsg ;))?

    Wieso beschäftigst du dich mit Treeview - hast du schon beschlossen, dass das interessant sei? Hast du die Dokumentenstruktur inzwischen gefunden?

    (Ich glaub ich gewöhne mir an, drauf hinzuweisen, dassich meine Gegenfragen auch beantwortet haben möchte - zu häufig werden die meisten oder auch alle einfach übergangen)
    zu deinen gegenfragen: Ok hast recht erstmal Lesen könnte nagut würde Helfen. Doch bin ich derzeit im stress. muss nebenbei meine Prüfung vorbereiten!

    Das Listview dazu nicht taugt hab ich schon verstanden, daher lese ich mich ja gerade zum thema treeview ein. wobei ich aber Denke so richtig erfüllt auch das nicht den gewünschten zweck.

    Also kurz nochmal zur Erläuterung. frm1 ist die Form in der alle Controlls liegen und frm2 ist die Form in der mir die Controlls der frm1 auf gelistet werden Sollen und per klick auf ein Controll in frm2 (also die aufgelisteten) hebt das entsprechende Control in der frm1 hervor.

    Grund warum sowas gebaut werden soll: An dem grossen Project arbeiten einige Programmieren und nicht immer hält sich jeder an namensvergaben für bsp textboxen. somit ist es oft schwer dahinter zu steigen welche box jetzt was ist. Darum die auflistung und Per Click das Hervorheben.

    "es macht noch nicht das was es soll" nunja soll heissen das genau das noch nicht funktioniert was die eigentliche Aufgabe des ganzen ist, das Hervorheben der gewünschten Controlls.

    ich weiss ich drück mich manchmal, ok öfters mal recht ungeschickt aus :)
    das habe ich versucht zumindest passagen davon einzubinden, jedoch nur mit mässigem erfolg. oder ich raffs nicht.

    naja muss wohl doch nochmal zurück zu den grundlagen :(

    ich hab halt diverse subs aus deinem projekt genommen und in meines eingebaut jedoch kamen hier einige fehler. ich hab das ganze auch angepasst also nicht einfach 1:1 C&P.
    Du kannst gerne Fragen stellen zu Passagen, die du nicht nachvollziehen kannst.
    Die Solution ist recht trickreich, da kann man offbar nicht iwas rausrupfen und wo anners reinbasteln.

    Ich habse jetzt übrigens nochma bischen besser strukturiert, und ein Readme reingemacht

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

    danke fürs angebot. aber ich hab grad mit kollegen (auch praktikant überlegt) ob es nicht sinnvoller ist das ganze so zu gestalten das per hotkey das ganze durchlaufen wird und in einer messagebox immer ein element angezeigt wird. dazu nen ok button und einen "zeige" button welcher dann in der From das entsprechende element hervorhebt.

    Ist nur ne überlegung. auf nem anderen arbeitsplatz haben wir das jetzt auf diese messagebox umgelegt und sie zeigt nach und nach jedes element an aber ich kann sie noch nicht in der form hervorheben.
    warum sollte man da jedesmal so mühsam durchsteppen, wenn man ebensogut alle Elemente im Überblick haben kann, aus denen man auswählt?

    Es ließe sich sogar was dranfrickeln, wo in der overView-Listbox der Name des grade im Form fokussierten Control sich selbst selektiert.
    Also eine wechselseitige Synchronisierung, ähnlich Databinding.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Irgendwie steh ich nur noch auf der Leitung....

    Entweder raff ich das absolut nicht oder Google mag mich nicht. wie dem auch sein. Bisher hab ich noch nichts brauchbares und für mich verständliches gefunden.

    mein aktueller Code

    VB.NET-Quellcode

    1. Public Class Ettel_hk
    2. Private Sub Ettel_hk_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. DoToAllControls(frm_Ettel_Test)
    4. highlight(frm_Ettel_Test)
    5. TranslateControl(frm_Ettel_Test)
    6. End Sub
    7. Private Sub DoToAllControls(ByVal m_Control As Control) 'festlegung der aufzählung der Controlls
    8. For Each ctrl As Control In m_Control.Controls
    9. If ctrl.Controls.Count > 0 Then
    10. DoToAllControls(ctrl)
    11. End If
    12. If ctrl.GetType().Equals(GetType(ToolStrip)) Then 'wenn das Controll ein Toolstrip ist
    13. For Each item As ToolStripItem In DirectCast(ctrl, ToolStrip).Items 'wird per Cast das jeweilig 'Item ausgewählt und gelistet
    14. Next
    15. End If
    16. Next
    17. End Sub
    18. Private Sub highlight(ByVal frm_Ettel_Test As frm_Ettel_Test)
    19. Dim index As Integer = -1
    20. If LV1.SelectedIndices.Count > 0 Then
    21. index = LV1.SelectedIndices(+1)
    22. End If
    23. LV1.Select()
    24. End Sub
    25. Private Sub markit()
    26. InitializeComponent()
    27. With New Control
    28. .Dock = DockStyle.Fill
    29. .BackColor = Color.Black
    30. Me.Controls.Add(LV1)
    31. End With
    32. End Sub
    33. Private Sub Markup(ByVal bounds As Rectangle)
    34. With bounds
    35. Me.Bounds = New Rectangle(.X - 4, .Y - 4, .Width + 9, .Height + 9)
    36. End With
    37. End Sub
    38. Public Sub TranslateForm(ByRef frm As Form)
    39. For Each cntrl As Control In frm.Controls
    40. Me.TranslateControl(cntrl)
    41. Next
    42. End Sub
    43. Private Sub TranslateControl(ByRef cntrl As Control)
    44. 'MsgBox("Control: " & cntrl.Name)
    45. markit()
    46. For Each item As System.Windows.Forms.Control In cntrl.Controls
    47. Me.TranslateControl(item)
    48. Next
    49. End Sub
    50. Private Sub LV1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    51. LV1.Items.Add(frm_Ettel_Test.Controls) 'hier sollen eigentliche die objekte der anderen form ghelistet werden
    52. End Sub
    53. End Class


    Ich bekomm es nicht hin das er mir in LV1, das ist eine Listbox die Controlls auflistet. jemand ne Idee?

    Muss doch nen weg geben das wenigstens mal vernünftig zu listen!

    Das mit der Wechselseitigen Synch macht auf den ersten Blick nen guten Eindruck zumindest als IDee. nur wie gesagt mein Programmiertechnischen Erfahrungen beschränken sich auf ein minimum vor allem in VB.Net
    Also ich bestell den Thread jetzt ab.

    Offensichtlich willst du auf der Leitung stehen, sonst würdeste dich ja mal von deinem nicht lauffähigen Code abwenden, um dir ein Verständnis zu erarbeiten von einer bereits vorliegenden Lösung, die läuft. Aber das sagte ich ja schon.
    ohne dir zu nahe treten zu wollen, aber bist du etwa als allwissender meister vom himmel gefallen?

    ich bin kein Pro und das sagte ich bereits beim erstellen des themas!

    ich bin grad was VB.Net angeht ein völliger kacknoob. macht nix. dafür bin ich ja in einer ausbildung. schulisch wurde uns jedoch vb gestrichen somit wurden wir hier im Praktikum ins kalte wasser geschubst!

    Konstruktiv und äusserst hilfreich wäre es gewesen wenn du zum bleistift das ganze einem angehenden wie mir mal genauer erklärt hättest. stattdessen sitz ich hier schau mir deinen Code an und versuche daraus zu schliessen was was macht um es dann in meinem Code zu verwenden.

    Solch Patzige antworten dann noch von Wegen
    Also ich bestell den Thread jetzt ab.
    sind wenn überhaupt kontraproduktiv und helfen nicht wirklich weiter.

    nundenn wie dem auch sei es bringt nichts sich darüber zu streiten. werd ich wohl weiter google quälen müssen!

    Opelig schrieb:

    Konstruktiv und äusserst hilfreich wäre es gewesen wenn du zum bleistift das ganze einem angehenden wie mir mal genauer erklärt hättest. stattdessen sitz ich hier schau mir deinen Code an und versuche daraus zu schliessen was was macht um es dann in meinem Code zu verwenden.

    Genau das war mein Angebot. Nämlich dass du Fragen stellst, was du nicht verstehst.
    Ich kann nicht die ganze App erläutern, weil ich keine Ahnung haben kann, wie weit in Grundlagen ich zurückgehen müsste.

    (ich gebs ja zu. Eine letzte Antwort habichnoch abgewartet. Aber nun.)
    Wunderhübshcen Guten Morgen,

    also ich bin natürlich nicht untätig und hab mich gestern noch durch diverses Probieren, basteln und belesen soweit durchgeschlagen das ich jetzt alles in einer Listbox sehe. sogar mit Unterteilung! ok die unterteilung sieht mann nur wenn mann weiss wo sie ist -.-

    nichts des do trotz ich bekomm es nicht hin das etwas was ich in der Listbox marke, in der urform angezeigt bzw hervorgehobven wird.

    wie an meinem code ersichtlich hab ich ne ganze ladung probiert.

    das ist der code der Form samt der lsitbox:

    VB.NET-Quellcode

    1. Public Class Ettel_hk
    2. Private Sub Ettel_hk_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. DoToAllControls(frm_Ettel_Test)
    4. highlight(frm_Ettel_Test)
    5. TranslateControl(frm_Ettel_Test)
    6. frm_Ettel_Test.Activate()
    7. End Sub
    8. Private Sub DoToAllControls(ByVal m_Control As Control) 'festlegung der aufzählung der Controlls
    9. For Each ctrl As Control In m_Control.Controls
    10. If ctrl.Controls.Count > 0 Then
    11. DoToAllControls(ctrl)
    12. End If
    13. If ctrl.GetType().Equals(GetType(ToolStrip)) Then 'wenn das Controll ein Toolstrip ist
    14. For Each item As ToolStripItem In DirectCast(ctrl, ToolStrip).Items 'wird per Cast das jeweilig 'Item ausgewählt und gelistet
    15. Next
    16. End If
    17. Next
    18. End Sub
    19. Private Sub highlight(ByVal frm_Ettel_Test As frm_Ettel_Test)
    20. Dim index As Integer = -1
    21. If LV1.SelectedIndices.Count > 0 Then
    22. index = LV1.SelectedIndices(0)
    23. End If
    24. LV1.Select()
    25. End Sub
    26. 'Private Sub markit()
    27. ' InitializeComponent()
    28. ' With New Control
    29. ' .Dock = DockStyle.Fill
    30. ' .BackColor = Color.Black
    31. ' Me.Controls.Add(LV1)
    32. ' End With
    33. 'End Sub
    34. Private Sub Markup(ByVal bounds As Rectangle)
    35. With bounds
    36. Me.Bounds = New Rectangle(.X - 4, .Y - 4, .Width + 9, .Height + 9)
    37. End With
    38. End Sub
    39. Public Sub TranslateForm(ByRef frm As Form)
    40. For Each cntrl As Control In frm.Controls
    41. Me.TranslateControl(cntrl)
    42. Next
    43. End Sub
    44. Private Sub TranslateControl(ByRef cntrl As Control)
    45. 'MsgBox("Control: " & cntrl.Name)
    46. 'markit()
    47. LV1.Items.Add(cntrl.Name)
    48. For Each item As System.Windows.Forms.Control In cntrl.Controls
    49. Me.TranslateControl(item)
    50. Next
    51. End Sub
    52. 'Private Sub LV1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    53. ' 'LV1.Items.Add(frm_Ettel_Test.Controls) 'hier sollen eigentliche die objekte der anderen form ghelistet werden
    54. 'End Sub
    55. Private Sub LV1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LV1.MouseDoubleClick
    56. 'per doubleclick wird auf urform geschalten und hoffentlich auch das entsprechnde objekt umrahmt
    57. End If
    58. End Sub
    59. End Class


    so und das hier ist die form in der die elemente liegen,

    VB.NET-Quellcode

    1. Public Class frm_Ettel_Test
    2. Private Sub frm_Ettel_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    3. BTA_MA.Fill()
    4. BTA_FZ.Fill()
    5. Ettel_hk.Activate()
    6. End Sub
    7. Private Sub ToolTip1_Draw(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawToolTipEventArgs) Handles ToolTip1.Draw
    8. e.DrawBackground()
    9. e.DrawBorder()
    10. e.DrawText()
    11. End Sub
    12. Private Sub frmMain_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
    13. If e.KeyData = (Keys.Alt Or Keys.F9) Then
    14. Ettel_hk.Show()
    15. End If
    16. End Sub
    17. End Class


    es kann ja eigentlich nicht mehr viel seien bis das gewünschte ergebniss zum vorschein kommt:)