Simulácia Button_click po KeyDown   zodpovězená otázka

VB.NET, WinForms

Vedel by mi niekto poradiť, ako simulovať stlačenie prislušného buttonu po stlačení klávesu na klávesnici. To znamená, že ak kliknem trebárs na klávesnici na šipku doľava tak na formulári vidím, že príslušný button klikol.

Za všetky odpovede vopred ďakujem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Předpokládám, že chcete toto simulovat pro okno jiné aplikace, pak použijte WinAPI funkci SendMessage nebo PostMessage a pošlete zprávu WM_KEYDOWN (nebo tak nějak podobně se jmenuje, viz dokumentace MSDN). Pokud to chcete pro okno ve vlastní aplikaci, pak je jednodušší přímo zavolat nějakou z funkcí .NET frameworku, která má na starostí handování příslušních zpráv. Nebo samozřejmě můžete použít i výše zmiňovanou Send nebo PostMessage, ty fungují obecně pro libovolná okna v dané session.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Ďakujem za odpoveď.

Chcem to vo vlastnej aplikácii. Mohli by ste, prosím, vysvetliť to podrobnejšie. Nie som si istý, či si rozumieme. Mne nejde o to ako spustiť udalosť pod príslušným buttonom, chcel by som vidieť, aby ten button klikol.

Príjemný večer!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nerozumím.

Chcete zavolat tu proceduru Button_Click po stisknutí klávesy?

Pokud ano, tak třeba:

Private Sub Form1_KeyDown(..., e As ....) Handles MyBase.KeyDown
 Select Case e.KeyCode
  Case Keys.Left
   Button1_Click(sender, eventargs.empty)
 End Select
End Sub

Private sub Button1_Click(sender As Object, e As Eventargs)
 MsgBox("Stisknuli jste tlačítko nebo klávesu doleva!")
End Sub

Actual: Promiňte, nevšíml jsem si že nechcete vyvolat tu událost.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ďakujem za odpoveď. Chcem zavolať procedúru. To aj viem. Ale mne ide hlavne o animáciu kliknutia na button.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Chápu to tak, že potřebuje standartně spustit procedudu která náleží k události click buttonu (tak jak jste napsal) ale zároveň potřebuje aby se provedla i animace (tzn. aby bylo vizuálně vidět že se kliká na button).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Veľmi pekne ďakujem, že ste to tak dobre preložili. :-) Áno, je to presne tak.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zhruba tak si to predstavujem:

Imports System.Windows.Forms
Public Class Form1
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        Select Case e.KeyData
            Case Keys.Left
                btnLeft_Click(sender, EventArgs.Empty)
                btnLeft.BackColor = SystemColors.ControlDark
            Case Keys.NumPad1
                btn1_Click(sender, EventArgs.Empty)
                btn1.BackColor = SystemColors.ControlDark
        End Select
    End Sub
    Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
        Select Case e.KeyCode
            Case Keys.Left
                btnLeft.BackColor = SystemColors.ControlLight
            Case Keys.NumPad1
                btn1.BackColor = SystemColors.ControlLight
        End Select
    End Sub
    Private Sub btn1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn1.Click
        TextBox1.Text &= 1
    End Sub
    Private Sub btnLeft_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLeft.Click
        TextBox1.Text = "Vľavo"
    End Sub
End Class

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback