c# zu bestimmtem Tab springen

werner_sg

Erfahrenes Mitglied
Hallo ich möchte gerne das nach dem Button Click der Cursor wieder zum ersten TabIndex springt

hier mal mein Code ( Button14 ist das Problemkind, bei Button10 funktioniert es ja mit dem neu initialisieren)

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Media;
using System.Data.Odbc;
using System.Data.OleDb;

namespace Guthaben
{


         public partial class Guthaben : Form {

        private OleDbConnection con;
        private OleDbCommand sql;

    
        public Guthaben()
        {
            InitializeComponent();
            
            String connect = "Provider=Microsoft.JET.OLEDB.4.0;" +
                            "data source=c://temp//Guthabenkarte.mdb";
            con = new OleDbConnection(connect);
            con.Open();
            sql = con.CreateCommand();

        }

        private void Form1_Load(object sender, EventArgs e)
    {
    
    }
        private void button1_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "1";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "2";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "3";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "4";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "5";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "6";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();
        }

        private void button7_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "7";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();
        }

        private void button8_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "8";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();
        }

        private void button9_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "9";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();
        }

        private void button10_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "0";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();
        }

        private void button11_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += ",";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();
        }

        private void button12_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "00";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();
        }

        private void button13_Click(object sender, EventArgs e)
        {
            tbRechnung.Clear();
        }

        private void button14_Click(object sender, EventArgs e)
        {

            tbRestguthaben.Text= System.Convert.ToString(System.Convert.ToDouble(tbGuthaben.Text) - System.Convert.ToDouble(tbRechnung.Text));
          
           sql.CommandText = "Update Guthaben set Betrag= '" + tbRestguthaben.Text + "'Where Kartennummer=" + tbKartennummer.Text + "";
            sql.ExecuteNonQuery();
            

                    this.Controls.Clear();
                   this.InitializeComponent();
            
        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {
            sql.CommandText = "select * from Guthaben Where Kartennummer=" + int.Parse(tbKartennummer.Text);
            OleDbDataReader reader = sql.ExecuteReader();
            tbGuthaben.Clear();
            
            
            while (reader.Read())
            {
                tbGuthaben.AppendText("" + reader.GetValue(2) + "");
                
            }
            reader.Close();


        }

        private void button10_Click_1(object sender, EventArgs e)
        {

           Login Login = new Login();
           Login.Show();


            this.Controls.Clear();
            this.InitializeComponent();
        }

    }
}

wäre für Infos recht Dankbar
 
Einfach die Focus Methode des Controls Aufrufen.
Code:
meinControl.Focus()

Problem ist den TabIndex 0 so gibt es nicht, innerhalb der Container wird immer wieder neu von 0 gezählt.

und button14_Click der InitializeComponent Aufruf, ganz schlechte Idee.
Dieser Aufruf sollte eigentlich nur einmal im Konstruktor erfolgen.
(ach und in button10_Click sollte er auch raus)
 
Hallo Spyke,

die Idee mit dem Focus hatte ich auch schon funktioniert aber irgendwie nicht wirklich.

Der TabIndex 0 wird im VisualStudio ja bei der ersten Box oder dem ersten Button automatisch gesetzt, und beim ersten Aufruf funktioniert es ja auch.

Das InitializeComponent beim andern Button ist bis her die einzige Lösung die wirklich funktioniert, auch wenn nicht ganz so optimal.
 
Focus sollte funktionieren, eventuell klaut ein anderes Control durch irgendeine Aktion wieder den Focus.
Und es sollte natürlich ein Control sein welches den Focus halten kann (Label zum Beispiel geht nicht).

Wie gesagt das ganze InitializeComponent zeugs raus (und das Controls.Clear() ) und nur wieder standardmäßig in den Konstruktor.
 
Hallo Spyke,

irgendwie will es nicht habe jetzt alle Initialize Componenten wieder raus und die Textbox tbKartennummer auf TabIndex1 gesetzt.

hier noch mal der Code der ganzen Form

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Media;
using System.Data.Odbc;
using System.Data.OleDb;


namespace PayCard
{
    public partial class Guthaben : Form
    {

        private OleDbConnection con;
        private OleDbCommand sql;

        public Guthaben()
        {
            InitializeComponent();

            String connect = "Provider=Microsoft.JET.OLEDB.4.0;" +
                "data source=c://temp//Guthabenkarte.mdb";
            con = new OleDbConnection(connect);
            con.Open();
            sql = con.CreateCommand();

        }

        private void Guthaben_Load(object sender, EventArgs e)
        {
            panel1.Location = new Point(
    this.ClientSize.Width / 2 - panel1.Size.Width / 2,
    this.ClientSize.Height / 2 - panel1.Size.Height / 2);
            panel1.Anchor = AnchorStyles.None;
        }


        private void tbKartennummer_TextChanged(object sender, EventArgs e)
        {
            sql.CommandText = "select * from Guthaben Where Kartennummer=" + int.Parse(tbKartennummer.Text);
            OleDbDataReader reader = sql.ExecuteReader();
            tbGuthaben.Clear();


            while (reader.Read())
            {
                tbGuthaben.AppendText("" + reader.GetValue(2) + "");
                tb_Name.AppendText("" + reader.GetValue(3) + "");
                tb_Kredit.AppendText("" + reader.GetValue(6) + "");
                tb_Summe.AppendText("" + reader.GetValue(5) + "");
                tbRechnungsumme.AppendText("" + reader.GetValue(4) + "");

            }
            reader.Close();

        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            tbRechnung.Text += "1";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            tbRechnung.Text += "2";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void button3_Click_1(object sender, EventArgs e)
        {
            tbRechnung.Text += "3";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void button4_Click_1(object sender, EventArgs e)
        {
            tbRechnung.Text += "4";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void button5_Click_1(object sender, EventArgs e)
        {
            tbRechnung.Text += "5";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void button6_Click_1(object sender, EventArgs e)
        {
            tbRechnung.Text += "6";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void button7_Click_1(object sender, EventArgs e)
        {
            tbRechnung.Text += "7";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void button8_Click_1(object sender, EventArgs e)
        {
            tbRechnung.Text += "8";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void button9_Click_1(object sender, EventArgs e)
        {
            tbRechnung.Text += "9";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void button0_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "0";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void buttonKomma_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += ",";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void button00_Click(object sender, EventArgs e)
        {
            tbRechnung.Text += "00";
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void buttonLöschen_Click(object sender, EventArgs e)
        {
            tbRechnung.Clear();
            SoundPlayer simpleSound = new SoundPlayer(@"c://temp//Click.wav");
            simpleSound.Play();

        }

        private void button10_Click_2(object sender, EventArgs e)
        {
          


            Login Login = new Login();
            Login.Show();

        }

        private void buttonEnter_Click(object sender, EventArgs e)
        {

        
                tbRestguthaben.Text = System.Convert.ToString(System.Convert.ToDouble(tbGuthaben.Text) - System.Convert.ToDouble(tbRechnung.Text));

            {
                sql.CommandText = "Update Guthaben set Betrag= '" + tbRestguthaben.Text + "'Where Kartennummer=" + tbKartennummer.Text + "";
                sql.ExecuteNonQuery();
                }

            {
                sql.CommandText = "Update Guthaben set Buchung= '" + tbRechnung.Text + "'Where Kartennummer=" + tbKartennummer.Text + "";
                sql.ExecuteNonQuery();
            }

            tb_Summe.Text = System.Convert.ToString(System.Convert.ToDouble(tb_Summe.Text) + System.Convert.ToDouble(tbRechnung.Text));

            {
                sql.CommandText = "Update Guthaben set Umsatz= '" + tb_Summe.Text + "'Where Kartennummer=" + tbKartennummer.Text + "";
                sql.ExecuteNonQuery();
            }

            tbRechnung.Clear();
            tbKartennummer.Clear();
            tb_Name.Clear();
            tbRechnungsumme.Clear();
            tbRestguthaben.Clear();
            tb_Kredit.Clear();
            tb_Summe.Clear();
            tbGuthaben.Clear();



        }
    }
}
 
Habs jetzt über eine extra Startform gelöst,die immer aktiv im Hintergrund ist.

Somit kann ich die jeweilige Form nach Abschluß des Vorgangs schließenund neu öffnen, wodurch ich wieder beim gewünschten Feld starte.
 
Hatte ich auch wieder rausgenommen,

nachdem ich aber alles geändert hatte bin ich beim Suchen nach was anderem über eine Seite gestolpert wo auch das mit dem Focus noch mal genauer zu lesen war.

ich hatte es immer falsch versucht:)

hätte es einfach nach dem Muster meinetextbox.Focus(); versuchen sollen

naja für das nächste mal habe ich es dann jetzt.

Danke
 
Zurück