Textbox direkte Tastatur Taste. Verfasst am: 16.03.2008, 12:29
Hallo Leute.
Ich habe in meinem Programm ganz viele Befehle die ein User auf Tasten belegen können sollte.
Er sollte also eine Art Textbox anklicken, und wenn er dort dann eine Tastatur drückt sollte der Befehl in der Textbox drin stehen, sprich User1 Drückt "strg" dann sollte "strg" auch in der Textbox drin stehen.
Ist die Textbox dafür geeignet ? oder gibt es vielleicht eine andere Form dafür
?
Wie kann ich sowas machen?
Gruß _________________
Teto_ Poster
Anmeldedatum: 28.02.2007 Beiträge: 106
Verfasst am: 16.03.2008, 12:32
nehme das Key_Down Event oder Key_Press Event von der Textbox und dort prüft dann mit mit if anweisungen welche Taste gedrückt wird und dann sagst du ihm halt immer was passieren soll wenn die taste gedrückt wird.
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 16.03.2008, 12:40
Key_Down ist hier das richtige.
Key_Press reagiert nicht auf Strg, Shift oder Alt.
Beim Key_Down Event bekommst du über die Variable Shift zurück, ob Shift, Strg oder Alt gedrückt wurde.
Shift = 1
Strg = 2
Alt = 4 _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Revy_ Newbie
Anmeldedatum: 05.03.2008 Beiträge: 19
Verfasst am: 16.03.2008, 14:30
Jopp geht , danke ^^
Gibts auch eine Möglichkeit das ich alle sachen vorschreibe und der User kann sie dann aus so einem Menü auswählen?
Gruß
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 16.03.2008, 14:48
ComboBox
Code:
Combo1.Additem "Text"
_________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Revy_ Newbie
Anmeldedatum: 05.03.2008 Beiträge: 19
Verfasst am: 16.03.2008, 19:22
Also so ganz scheint das nicht zu funktionieren:
Irgendwie verstehe ich das nicht ^^
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
ComboBox1.Additem = "Test"
End Sub
End Class
"Fehler 1 "Additem" ist kein Member von "System.Windows.Forms.ComboBox".
Irgendwas mache ich falsch... bitte um Hilfe.
Gruß
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 16.03.2008, 19:23
Ganz einfach. Du codest scheinbar in VB.Net und nicht VB6.
Falsche Sektion
Edit//
Ich verschiebs mal. _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Revy_ Newbie
Anmeldedatum: 05.03.2008 Beiträge: 19
Verfasst am: 16.03.2008, 19:45
Hab das Problem gelöst.
ComboBox1.Items.Add("test")
danke trotzdem
tr4st_ « Moderator »
Anmeldedatum: 17.12.2007 Beiträge: 315 Wohnort: Private Class _ Villa()
auswahl_games.SelectedItem = "Painkiller Black Edition"
End Sub
End Class
Nur die Combobox bleibt nur mit einer leeren Auswahl bestehen, und ich verstehe nicht warum.
Weiß jemand Rat?
tr4st_ « Moderator »
Anmeldedatum: 17.12.2007 Beiträge: 315 Wohnort: Private Class _ Villa()
Verfasst am: 16.03.2008, 20:34
Code:
auswahl_games_SelectedIndexChanged
Falsches Event! _________________ Avoid Suspicion, Manipulate your friends, Eliminate your enemies.
Revy_ Newbie
Anmeldedatum: 05.03.2008 Beiträge: 19
Verfasst am: 16.03.2008, 20:47
Sorry wenn ich Frage.
Das ist doch der Code wenn ich den Button anklicke, ist der nicht richtig?
Was muss ich für ein Event nehmen?
Sorry bin ganz neu in VB.NET
Zuletzt bearbeitet von Revy_ am 16.03.2008, 21:13, insgesamt einmal bearbeitet
tr4st_ « Moderator »
Anmeldedatum: 17.12.2007 Beiträge: 315 Wohnort: Private Class _ Villa()
Verfasst am: 16.03.2008, 20:53
Links die Klasse und Rechts das Event. _________________ Avoid Suspicion, Manipulate your friends, Eliminate your enemies.
Revy_ Newbie
Anmeldedatum: 05.03.2008 Beiträge: 19
Verfasst am: 16.03.2008, 21:10
Das mit den Klassen wusste ich noch garnicht.
Benutze jetzt TabIndexChanged, damit funktionierts.
Danke für deine Hilfe!
Habe ein kleines Problem.
Ich möchte gerne das was in der Combobox steht auswählen und mit eine If verzweigung versehen.
Wenn in der Combobox Quake3 Arena steht, soll die Q3.vb geöffnet werden.
Das klappt auch soweit, jetzt soll aber die start.vb beendet werden.
Deshalb habe ich Me.Close() drangehängt, dann beendet sich aber das ganze Programm.
Dachte ich mir, nagut mit Start.Close() wird es ja auch gehen, tut es aber nicht.. er sagt mir ich solle Me.Close verwenden.
Was mache ich nun?
habe es nochmal anders probiert :
Sobald zb. die Q3.vb gestartet wird:
Damit kann ich zwar Start.Close verwenden, aber es beenden sich alle Fenster. sprich die start.vb und die gewähle q3.vb
Zitat:
Private Sub q3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
start.close()
End Sub
Hoffe mir kann jemand helfen.
Zitat:
Public Class Start
' Combobox , Gameauswahl
Private Sub auswahl_games_TabIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles auswahl_games.TabIndexChanged
auswahl_games.Items.AddRange(New String() _
{"Quake3 Arena", "Quake4 Arena"})
auswahl_games.SelectedItem = "Quake4 Arena"
End Sub
Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click
If auswahl_games.Text = "Quake3 Arena" Then
q3.Show()
Me.Close()
End If
If auswahl_games.Text = "Quake4 Arena" Then
q4.Show()
Me.Close()
End If
End Sub
End Class
tr4st_ « Moderator »
Anmeldedatum: 17.12.2007 Beiträge: 315 Wohnort: Private Class _ Villa()
Verfasst am: 17.03.2008, 00:16
Beende mal Windows und versuch weiterhin den Mediaplayer laufen zu lassen.
Verstehst was ich meine?
Du könntest die Form unsichtbar machen. _________________ Avoid Suspicion, Manipulate your friends, Eliminate your enemies.
Revy_ Newbie
Anmeldedatum: 05.03.2008 Beiträge: 19
Verfasst am: 17.03.2008, 00:49
Gut das ich dies unsichtbar machen kann ist die eine Sache.
Aber das zieht ja ein Nachteil mit sich, die Form ist zwar unsicthbar... lauft aber auch unsichtbar weiter wenn ich zb. die Form von Q3 auch schließe.
Dann hat der Anwender ein Unsichtbares Programm am laufen.
Die Einfache Variante waere es jetzt einfach sobald die Form Q3.vb geschlossen wird , die start.vb wieder sichtbar wird.
Aber da Q3.vb quasi der abschluss des programmes ist, sollte sich auch das ganze Programm schließen.
Habe gedacht ich könnte es mit einer ganz einfaches If Anweisung lösen.
If q3.Close() Then
Me.Close()
End If
Aber er sagt mir dann das q3.close() keinen Wert hat.
Wie löse ich das denn nun richtig ?
Marduk_ « Moderator »
Anmeldedatum: 17.06.2007 Beiträge: 389
Verfasst am: 17.03.2008, 01:26
Die Form hat ein Event namens Onclosing. In das Event kannst du "End" reinschreiben. Damit wird abgefragt ob die Q3 Form grade geschlossen wird, falls ja, dann wird dein Code ausgeführt. In dem Fall wird das gesamte Programm geschlossen.
Revy_ Newbie
Anmeldedatum: 05.03.2008 Beiträge: 19
Verfasst am: 17.03.2008, 01:57
Das ist echt hart, das versteh überhaupt nicht^^
Wo soll ich was reinschreiben, und dann wird mein code ausgeführt in dem fall wird mein Programm geschlossen !?O_O?!
Also meine Form hat kein Event was Onclosing heißt.
Die einzigen Events die mir zur verfügung stehen und die ich mit dem Bereich in Verbindung bringen würde sind folgende
Zitat:
Private Sub Start_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
End Sub
' und
Private Sub Start_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
End Sub
Da gibt es auch die "End-Anweisung" aber ich habe keine Ahnung wie ich die benutze und vorallem nicht wie ich damit abfragen soll ob die Q3 geschlossen wird.
Hat da jemand für mich einen Beispiel Quellcode ?
Weil wenn ich das nicht in eine If Anweisung packen kann, wie soll ich dann was Abfragen?
Gruß
Zuletzt bearbeitet von Revy_ am 17.03.2008, 02:10, insgesamt einmal bearbeitet
tr4st_ « Moderator »
Anmeldedatum: 17.12.2007 Beiträge: 315 Wohnort: Private Class _ Villa()
Verfasst am: 17.03.2008, 02:04
Code:
Me.Close()
Schließt immer nur die Form in der es aufgerufen wurde. _________________ Avoid Suspicion, Manipulate your friends, Eliminate your enemies.
Revy_ Newbie
Anmeldedatum: 05.03.2008 Beiträge: 19
Verfasst am: 17.03.2008, 02:11
Ja inzwischen habe ich das auch realisiert ^^... das hilft mir aber bei dem genannten Problem nicht weiter.
tr4st_ « Moderator »
Anmeldedatum: 17.12.2007 Beiträge: 315 Wohnort: Private Class _ Villa()
Verfasst am: 17.03.2008, 02:15
Wie schließt du denn die Q3 Form, über einen Button? _________________ Avoid Suspicion, Manipulate your friends, Eliminate your enemies.
Revy_ Newbie
Anmeldedatum: 05.03.2008 Beiträge: 19
Verfasst am: 17.03.2008, 02:27
Nein das sollte ganz normal über das "X" oben rechts geschlossen werden.
Über einen Button wäre auch eine Möglichkeit, aber dann müsste ich das "X" oben Rehchts ja ausblenden weil sonst das selbe Problem besteht falls der Awender über das "X" das Programm beendet.
Abgesehen davon möchte ich unbedingt wissen wie das Problem wie es gerade besteht zu lösen ist ^^
tr4st_ « Moderator »
Anmeldedatum: 17.12.2007 Beiträge: 315 Wohnort: Private Class _ Villa()
Verfasst am: 17.03.2008, 02:38
Ich konnte es wie folgt lösen.
Code:
Private Sub Q3_FormClosed(ByVal sender As Object, _
ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
start.Close()
End Sub
_________________ Avoid Suspicion, Manipulate your friends, Eliminate your enemies.
Revy_ Newbie
Anmeldedatum: 05.03.2008 Beiträge: 19
Verfasst am: 17.03.2008, 02:50
Und so funktionierts auch wunderbar.
Wirklich vielen dank!
Ich werde mir jetzt mal ein Kompendium zulegen oder eine Referenz wo ich mich nochmal genau über die Events informiere.
Wirklich vielen Dank.
Kann geschlossen werden.
Bahamut_ « Moderator »
Anmeldedatum: 12.12.2006 Beiträge: 250
Verfasst am: 17.03.2008, 10:46
Ich möchte allerdings noch etwas ergänzen - man kann tatsächlich die Startup-Form schließen und das Programm läuft weiter, bis die letzte Form geschlossen wird.
@tr4st: Vondaher war dein Vergleich mit Windows und dem Mediaplayer zwar ganz nett, aber leider falsch
Ihr müsst einfach nur in den Projekteigenschaften unter "Shutdown mode" -> "When last form closes" auswählen
Das Problem ist du musst in deinem Projekteigenschaften umstellen,das wenn das Startformular geschlossen wird nicht das Programm beendet wird.
Dazu gehst du oben auf
Projekt->*Projektname*-Eigenschaften dort in den Reiter Anwendungen und dort steht "Modus für das Herunterfahren" dort stellst du ein, beim Schließen des letzten Formulars.
Edit: habe gar net gesehen das Bahamut schon geposted hatte^^ _________________