Hur gör jag för att kolla om en tangent är nedtryckt i VB.NET. Hallåj! i c# skulle det bli: Fattar inte. Altså jag fattar varken vad Peter eller jim menar. Eller fattar gör jag men fattar inte hur jag kollar om t.ex tangent A är nedtryckt. Jim's kod kanske fungerar men jag använder VB.NET o inte C# Microsoft Visual Basic 2005 Express Edition om det var det du mena. Du tar egenskaper på ditt formulär, sedan klickar du på blixten i egenskaperna (properties-fönstret, knappen som står för "events". Dubbelklicka på KeyPress-eventet. Nu hamnar du i koden i en funktion. Du kan jämföra e.KeyCode med någon tangent i enumerationen Keys. När jag nu har sagt att jag vill ha lätt förklaring o ändå inte fattar så... Måste varit min "fatta inte" -dag igår nu fatta jag ju =D Tja, någon skrev lite c# här ovanför: Ok nu är det nära. Nu fattar jag inte riktit. > o la in koden där. Med e.KeyCodeNed-tryckt knapp
Har tänkt att göra ett litet spel där två personer tävlar om vem som har snabbast reaktion. I mitten av rutan ska en "lampa" lysa röd o när den byter till grön så ska man slänga sig på sin knapp o snabbast får ett poäng.
PS!
Har ni några tipps till programmet så är de välkommnaSv: Ned-tryckt knapp
Den kortaste tidenheten i .Net är ticks tror jag. I Timespan-klassen finns en funktion som heter TicksToSeconds eller liknande. Du kan använda skillnaden mellan två tidpunkter i programmet och få fram reaktionstiden. Istället för att se om en tangent är nedtryckt så kan du använda events. Om det handlar om en Windows-app så har du keydown som event t.ex. vilket du kan fånga.
Om du vill ha specifikt om en tangent är nedtryckt så finns svaret här:
http://www.pellesoft.se/communicate/forum/view.aspx?msgid=207883&forumid=2&sum=0
Mvh
Peter Sv:Ned-tryckt knapp
<code>
public enum Player
{
Player1,
Player2,
}
this.KeyDown += new KeyEventHandler(Key_Press);
private void Key_Press(object sender, KeyEventArgs e)
{
if ( r.KeyCode == Keys.LShiftKey )
{
CheckReaction(Player.Player1);
}
else if ( r.KeyCode == Keys.RShiftKey )
{
CheckReaction(Player.Player2);
}
}
</code>
Se till at du har en timer igång som stoppas i "CheckReaction"-metoden. Timern ska ha Interval = 1 och du får ha en int som ökar med varje Tick-event i timern; Inten blir då antal millisekunder sen den startade.
Detta är bara ett exempel på hur det kan lösas, det finns ju hur många sätt som helst =)Sv:Ned-tryckt knapp
Har sökt på google i över 2 timmar nu och har inte hittat nått som hjälpt mig. Snälla berätta hur man gör så även jag fattar.Sv:Ned-tryckt knapp
Resten kan jag. Altså hur jag kollar vem som var först o detSv:Ned-tryckt knapp
EDIT:
BLIR GALEN OM NI INTE SÄGER HUR MAN GÖR SÅ JAG FATTARSv: Ned-tryckt knapp
Sv:Ned-tryckt knapp
är jag korkad eller har ni missuppfattat mig =DSv:Ned-tryckt knapp
Men en sak fatta jag dock inte.
"Nu hamnar du i koden i en funktion. Du kan jämföra e.KeyCode med någon tangent i enumerationen Keys."
Jag hamnar i koden. Men nu tog det stop. Vad ska jag skriva där ??? Jag ser vad du skrev men kan du kanske ge ett exempel ???Sv: Ned-tryckt knapp
<code>
private void Key_Press(object sender, KeyEventArgs e)
{
if ( r.KeyCode == Keys.LShiftKey )
{
CheckReaction(Player.Player1);
}
else if ( r.KeyCode == Keys.RShiftKey )
{
CheckReaction(Player.Player2);
}
}
</code>
Jag är rätt säker på att du med lite fantasi kan räkna ut hur du gör i vb.net. CheckReaction är en metod som inte finns, den bara finns där för att förklara var du ska stoppa in din kod där för att hantera att någon har tryckt på en tangent.Sv:Ned-tryckt knapp
Det enda som är fel nu är "r.KeyCode"
r is not declared
eftersom du skrev nått om e.KeyCode så bytter jag r mot e
"e.KeyCode"
KeyCode' is not a member of 'System.Windows.Forms.KeyPressEventArgs
<Hela koden>
<code>
Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
If (r.KeyCode = Keys.LShiftKey) Then
Player1 += 1
ElseIf (e.KeyCode = Keys.RShiftKey) Then
Player2 += 1
End If
End Sub
</code>
Vad har jag gort för fel denna gång ???Sv:Ned-tryckt knapp
Är inte så inne på VB än. Börgade för ca 2-3 veckor sedan.
Lekte lite i vb o hitta en rullgardin där det stod en blixt o "KeyPress"
Ändrade den till KeyDown
o la in koden där. Med e.KeyCode
O där fungera koden.
det jag nu behöver hjälp med är att när jag trycker på T så ska player ett få poäng o trycks R ner så ska P2 få poäng men det får de inte =(
< Koden >
<code>
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If (e.KeyCode = Keys.T) Then 'LShiftKey
Player1 += 1
Label3.Text = Player1
ElseIf (e.KeyCode = Keys.R) Then 'RShiftKey
Player2 += 1
Label4.Text = Player2
End If
End Sub
</code>
EDIT:
Testade med att lägga KeyDown på TabControllen istället. O nu fungerar det. Tack för all hjälp.Sv: Ned-tryckt knapp
> O där fungera koden.
> Testade med att lägga KeyDown på TabControllen istället. O nu fungerar det. Tack för all hjälp.
Du ser, det går att exprimentera lite för att få saker att fungera :) (Det här var ett ganska enkelt problem, men det är viktigt att du lär dig lösa problem själv, och nu har du löst lite på egen hand och har lättare att lösa nästa problem som dyker upp :P )