Laden...

[CF] TabControl Page wechsel mit Links/Rechts

Erstellt von Grimmbizkit vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.620 Views
G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren
[CF] TabControl Page wechsel mit Links/Rechts

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

K
79 Beiträge seit 2006
vor 15 Jahren

Hallo Grimmbizkit,

du musst noch

e.SuppressKeyPress = true;

angeben um die Verarbeitung des Tastendrucks zu unterbinden.

Mfg.

G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren

Wo finde ich das,

kan nirgends in
KeyDown, KeyUp, KeyPress

SuppressKeyPress finden.

Gruß Simon

S
53 Beiträge seit 2006
vor 15 Jahren

Den Findest du in der Form wo du auch den Event KeyDown Bindest

G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren

Kann es vll daran liegen, das ich das programm damals mit Framework 1.0 programmiert habe und jetzt nur mit 2.0 kompiliere?

G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren

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;
		}

G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren

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.