Hallo,
ich habe ein kleines Programm mit VS2005 und dem CF Framework 2.0 geschrieben. In dem Formular gibt es ein TabControl (als ersatz für Formulare). Doch wenn man die Links/Rechts Taste drückt, wechselt die Page.
Ich habe das im KeyDown Event des Formulars zwar abgefangen, doch leider bringt das nichts. Weil nur im dritten Tab sollen die Tasten Links und rechts benutzbar sein.
if (e.KeyCode.ToString() == cKey_LEFT)
{
if (lKeyTest) this.txtTx1.Text = "Taste: LINKS";
// Code
MessageBox.Show("Links: " + nTabpage.ToString());
switch(nTabpage)
{
case FORM1: // Formular 1
break;
case FORM2: // Formular 2
break;
case FORM3: // Formular 3
nKontrollAuswahl--;
if (nKontrollAuswahl < 1) nKontrollAuswahl = 3;
ZustandsAnzeige();
break;
}
}
Die Variablen FORM1 , ..2, ..3 Sind int's mit 0,1,2 als Werten.
Woran liegt das?
Gruß Simon
Hallo Grimmbizkit,
du musst noch
e.SuppressKeyPress = true;
angeben um die Verarbeitung des Tastendrucks zu unterbinden.
Mfg.
Wo finde ich das,
kan nirgends in
KeyDown, KeyUp, KeyPress
SuppressKeyPress finden.
Gruß Simon
Den Findest du in der Form wo du auch den Event KeyDown Bindest
Kann es vll daran liegen, das ich das programm damals mit Framework 1.0 programmiert habe und jetzt nur mit 2.0 kompiliere?
Ich habe ein GROSSES Problem.
Die SuppressKeyPress Eigenschaft habe ich gefunden, doch leider geht diese in dem CF Framework nicht
Die ist der komplett KeyDown Code.
Unter CF Framework 1.1 funktioniert der wunderbar. Unter CF Framework 2.0 leide rnicht mehr.
private void frm_Radlader_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (lDebugging && (e.KeyCode.ToString() == cKey_ROT))
{
MessageBox.Show("Taste (ROT) beendet die Anwendung (nur im Debugmodus)!");
Application.Exit();
}
if (lTasterDown)
return;
lTasterDown = true;
if (lAuswahl && (nTabpage == FORM1)) // Nach Auswahl keine Bedienung mehr nötig, abwarten der Antwort!
return;
if (e.KeyCode.ToString() == cKey_LEFT)
{
if (lKeyTest) this.txtTx1.Text = "Taste: LINKS";
// Code
switch(nTabpage)
{
case FORM1: // Formular 1
break;
case FORM2: // Formular 2
break;
case FORM3: // Formular 3
nKontrollAuswahl--;
if (nKontrollAuswahl < 1) nKontrollAuswahl = 3;
ZustandsAnzeige();
break;
}
}
if (e.KeyCode.ToString() == cKey_RIGHT)
{
if (lKeyTest) this.txtTx1.Text = "Taste: RECHTS";
// Code
switch(nTabpage)
{
case FORM1: // Formular 1
break;
case FORM2: // Formular 2
break;
case FORM3: // Formular 3
nKontrollAuswahl++;
if (nKontrollAuswahl > 3) nKontrollAuswahl = 1;
ZustandsAnzeige();
break;
}
}
if (e.KeyCode.ToString() == cKey_UP)
{
if (lKeyTest) this.txtTx1.Text = "Taste: OBEN";
// Code
switch(nTabpage)
{
case FORM1: // Formular 1
SkipUp();
break;
case FORM2: // Formular 2
break;
case FORM3: // Formular 3
break;
}
}
if (e.KeyCode.ToString() == cKey_DOWN)
{
if (lKeyTest) this.txtTx1.Text = "Taste: UNTEN";
// Code
switch(nTabpage)
{
case FORM1: // Formular 1
SkipDown();
break;
case FORM2: // Formular 2
break;
case FORM3: // Formular 3
break;
}
}
if (e.KeyCode.ToString() == cKey_GRUEN)
{
if (lKeyTest) this.txtTx1.Text = "Taste: GRUEN";
// Code
switch(nTabpage)
{
case FORM1: // Formular 1
Fkt_Auswahl();
break;
case FORM2: // Formular 2
break;
case FORM3: // Formular 3
SetKontrollAuswahl();
//tabPage2.BringToFront();
//nTabpage = FORM2;
//this.Focus(); // Focus wieder auf Formular, damit evtl. Key-Test noch funktioniert!
GoToFormular(FORM2);
break;
}
}
if (e.KeyCode.ToString() == cKey_GELB)
{
if (lKeyTest) this.txtTx1.Text = "Taste: GELB";
// Code
switch(nTabpage)
{
case FORM1: // Formular 1
// keine Fkt.!
break;
case FORM2: // Formular 2
Fkt_Freigabe();
break;
case FORM3: // Formular 3
break;
}
}
if (e.KeyCode.ToString() == cKey_ROT)
{
if (lKeyTest) this.txtTx1.Text = "Taste: ROT";
// Code
switch(nTabpage)
{
case FORM1: // Formular 1
this.lbl2Baustelle.Text = "- Betriebsmodus:";
this.lbl2Kfz.Text = "- Waagen-";
this.lbl2Sorte.Text = "- Fehlerspeicher";
this.lbl2Menge.Text = "- leeren";
lWFehlerSpeicherLeeren = true;
GoToFormular(FORM2);
break;
case FORM2: // Formular 2
if (lWFehlerSpeicherLeeren && !lWaageAuslesen)
{
lWFehlerSpeicherLeeren = false;
GoToFormular(FORM1);
}
break;
case FORM3: // Formular 3
break;
}
}
}
private void frm_Radlader_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
lTasterDown = false;
}
Habe das Problem gelöst. 👍
Hatte den Code im Keydown des Formulars, mittels KeyPreview = true.
Nachdem ich in das KeyDown des TabControls ein e.Handeld = true gesetzt habe, funktioniert es.