in
La comunità italiana dedicata a Sviluppatori e Architetti IT delle piattaforme Windows

Associare tasto premuto da tastiera a evento onclick di un button...

Ultimo messaggio ricevuto il 10-03-2008 13.58 da devspy. 1 risposta(e).
Pagina 1 di 1 (2 elemento/i)
Ordina messaggi: Precedente Successivo
  • 01-03-2008 10.52

    • soprandi
    • Utente Top 150
    • Registrato il 31-01-2008
    • Messaggi 7

    Associare tasto premuto da tastiera a evento onclick di un button...

     Ciao a tutti ho il seguente problema da risolvere....

    Sto scrivendo un programmino per suonare la pianola tramite la tastiera del pc, ho l'interfaccia che mostra la tastiera di un pianoforte dove ciascun tasto è un oggetto di tipo button...

    vorrei riuscire ad associare ad una serie di tasti della tastiera del pc i tasti della tastiera del piano... in questo modo per farmi capire:

     tasto         nota (button)

        A                    buttonDo.onclick("funzione che emette il midi con tonalità DO");

        W                  buttonDodiesis.onclick();

        S                   buttonRe.onclick();

    e cosi via...

    come posso impelentare una cosa di questo tipo?

     E come posso generare suoni con C#???

     

    grazie Simone 

     

    • Log
  • 10-03-2008 13.58 In risposta a

    Re: Associare tasto premuto da tastiera a evento onclick di un button...

    Per intercettare i tasti premuti, potresti usare l'evento KeyPress o, meglio ancora, KeyDown direttamente sulla Form (del namespace System.Windows.Forms).

    Per ottenere il suono delle note dallo speaker del PC, puoi adattare questo codice:

    using System; 
    using System.Runtime.InteropServices;

    class MainClass
    {
     [DllImport("kernel32.dll")]
     public static extern bool Beep(int freq,int duration);

         public static void Main(string[ args)
         {
              Console.WriteLine("un beep");
              Beep(1000,1000);
              Console.WriteLine("un beep più alto e più corto");
              Beep(2000,500);
         }

    }

    In sostanza, devi associare ad ogni nota una durata ed una frequenza. Oppure la cosa migliore potrebbe essere associare solo la frequenza della nota e definire la durata in proporzione alla pressione del tasto. Questo potrebbe essere il lavoro più difficile da mettere a punto.

    Qui trovi i riferimenti MSDN al metodo Console.Beep.

    Infine, ho trovato questa interessante discussione, in inglese:
    Newbie C# User. Question about Console.Beep()

    Buon lavoro! 

    Archiviato in: , , , ,
    • Log
Pagina 1 di 1 (2 elemento/i)
Prelevato da http://www.devspy.com/forums/p/4695/5883.aspx
DevSpy.com 6.0 © 2001-2008 - Alcuni Diritti Riservati
Salvo diversa indicazione, tutti i contenuti sono pubblicati sotto licenza "Creative Commons Attribution-Share Alike 3.0"