Frågan#1
På Codeproject så hittade jag en kontroll som var avsed som pianotangenter
http://www.codeproject.com/KB/miscctrl/LesStPianoKey.aspx
Det ser väldigt snyggt ut. Det enda som jag vill använda de till är att visa
ackord, dvs button33.KeyDown. Vad som händer då är att tangenten byter
färg.
Jag fick ett tips för något år sedan att använda mig av:
using System.Runtime.InteropServices;
const int WM_KEYUP = 0x101;
const int WM_KEYDOWN = 0x100;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd,
int msg,
IntPtr wParam,
IntPtr lParam);
//sen för att användas
SendMessage(button48.Handle, WM_KEYDOWN, new IntPtr(32), new IntPtr(0));
När jag sen startar applikationen så skulle ju denna tangent vara nedtryckt,
men ingenting händer och inga fel.
Sen tänkte jag att det kanske vore bättre och lägga det i en array:
private Multimedia.UI.PianoKey[] Tangent;
Tangent = new Multimedia.UI.PianoKey[40 - 1];
Tangent[0] = button33;
Tangent[1] = button34;
Tangent[2] = button35;
Tangent[3] = button36;
Tangent[4] = button37;osv
//och använder
SendMessage(Tangent[15].Handle, WM_KEYDOWN, new IntPtr(32), new IntPtr(0));
Tangent[15].Text = "C";
Likadant ingenting händer, och inga fel.
Nu finns det en egenskap som blir
Tangent[22].KeyDown
..och här får jag error
The event 'System.Windows.Forms.Control.KeyDown' can
only appear on the left hand side of += or -=
På vilket sätt är bäst att lösa mina problem?