Så här gör du: Avgöra vilken modifierarnyckel som trycktes
När du skapar ett program som accepterar användarens tangenttryckningar kanske du också vill övervaka för modifierarnycklar som SKIFT-, ALT- och CTRL-tangenterna. När en modifierarnyckel trycks in i kombination med andra nycklar, eller med musklickningar, kan programmet svara på rätt sätt. Om bokstaven S till exempel trycks ned kan det leda till att ett "s" visas på skärmen, men om tangenterna CTRL+S trycks ned kan det aktuella dokumentet sparas. Om du hanterar KeyDown-händelsen, anger egenskapen Modifiers hos KeyEventArgs, som tas emot av händelsehanteraren, vilka modifieringsknappar som trycks in. Alternativt anger egenskapen KeyData för KeyEventArgs det tecken som trycktes på samt eventuella modifierarnycklar i kombination med en bitvis OR. Men om du hanterar den KeyPress händelsen eller en mushändelse får händelsehanteraren inte den här informationen. I det här fallet måste du använda egenskapen ModifierKeys för klassen Control. I båda fallen måste du utföra en bitvis OCH av det korrekta Keys-värdet och det testade värdet. Keys enumeration erbjuder varianter av varje modifierartangent, så det är viktigt att du utför en bitvis AND med rätt värde. Skift-nyckeln representeras till exempel av Shift, ShiftKey, RShiftKey och LShiftKey Rätt värde för att testa SKIFT som en modifierarnyckel är Shift. Om du vill testa CTRL och ALT som modifierare bör du använda värdena Control respektive Alt.
Not
Visual Basic-programmerare kan också komma åt viktig information via egenskapen Keyboard
Så här avgör du vilken modifierarnyckel som trycktes på
Använd den bitvisa operatorn
AND
med egenskapen ModifierKeys och värdet i Keys-uppräkningen för att avgöra om en viss modifieringsnyckel trycks in. Följande kodexempel visar hur du avgör om SKIFT-tangenten trycks ned i en KeyPress händelsehanterare.private: void textBox1_KeyPress(Object^ sender, KeyPressEventArgs^ e) { if ((Control::ModifierKeys & Keys::Shift) == Keys::Shift) { MessageBox::Show("Pressed " + Keys::Shift.ToString()); } }
public void TextBox1_KeyPress(object sender, KeyPressEventArgs e) { if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) { MessageBox.Show("Pressed " + Keys.Shift); } }
Public Sub TextBox1_KeyPress(ByVal sender As Object, _ ByVal e As KeyPressEventArgs) Handles TextBox1.KeyPress If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then MsgBox("Pressed " + Keys.Shift.ToString()) End If End Sub
Se även
.NET Desktop feedback