C# 数据网格视图光标

C# 数据网格视图光标,c#,winforms,bindingsource,C#,Winforms,Bindingsource,我的datagrid显示我的sqlBd中的一个表。我为每一列添加一个文本框,用于显示每一行 这是我的代码: private void CustomerViewToolStripMenuItem_Click(object sender, EventArgs e) { BindingSource Clients_bs = new BindingSource(); SqlConnection con = new SqlConnection(dc.Con);

我的datagrid显示我的sqlBd中的一个表。我为每一列添加一个文本框,用于显示每一行

这是我的代码:

 private void CustomerViewToolStripMenuItem_Click(object sender, EventArgs e)
    {
        BindingSource Clients_bs = new BindingSource();
        SqlConnection con = new SqlConnection(dc.Con);
        con.Open();
        da.SelectCommand = new SqlCommand("SELECT * FROM Clients", con);

        da.Fill(dt);
        con.Close();

        dgCustomers.DataSource = dt;
        Clients_bs.DataSource = dt;

       txtBoxIdCustomers.DataBindings.Add(new Binding("Text", Clients_bs,"id_Client"));                

        txtBoxFullName.DataBindings.Add(new Binding("Text", Clients_bs, "prénom_Nom"));
        txtBoxAddress.DataBindings.Add(new Binding("Text", Clients_bs, "adresse"));
        txtBoxCity.DataBindings.Add(new Binding("Text", Clients_bs, "ville"));
        txtBoxProvince.DataBindings.Add(new Binding("Text", Clients_bs, "province"));
        txtBoxPostal.DataBindings.Add(new Binding("Text", Clients_bs, "code_Postal"));
        txtBoxPhone.DataBindings.Add(new Binding("Text", Clients_bs, "numéro_Teléphone"));
    }   
这将填充我的数据网格,就像sql中的表一样,我的txtbox只显示第一行,光标指向数据网格中的第一行

我想在第二行移动数据网格的光标,并在第二行自动显示txtbox的绑定

我可以将按钮设置为“上一个”和“下一个”,但不能设置光标

谢谢你的帮助

而不是这个:

dgCustomers.DataSource = dt;
Clients_bs.DataSource = dt;
SqlConnection con = new SqlConnection(dc.Con);
con.Open();
da.SelectCommand = new SqlCommand("SELECT * FROM Clients", con);

da.Fill(dt);
con.Close();
这样做:

Clients_bs.DataSource = dt;
dgCustomers.DataSource = Clients_bs;
using(var con = new SqlConnection(dc.Con))
{
    con.Open();
    da.SelectCommand = new SqlCommand("SELECT * FROM Clients", con);

    da.Fill(dt);
}
然后它应该像文本框和网格具有相同的BindingSource一样工作;-)

编辑:

还有,请不要这样:

dgCustomers.DataSource = dt;
Clients_bs.DataSource = dt;
SqlConnection con = new SqlConnection(dc.Con);
con.Open();
da.SelectCommand = new SqlCommand("SELECT * FROM Clients", con);

da.Fill(dt);
con.Close();
这样做:

Clients_bs.DataSource = dt;
dgCustomers.DataSource = Clients_bs;
using(var con = new SqlConnection(dc.Con))
{
    con.Open();
    da.SelectCommand = new SqlCommand("SELECT * FROM Clients", con);

    da.Fill(dt);
}
与此相反:

dgCustomers.DataSource = dt;
Clients_bs.DataSource = dt;
SqlConnection con = new SqlConnection(dc.Con);
con.Open();
da.SelectCommand = new SqlCommand("SELECT * FROM Clients", con);

da.Fill(dt);
con.Close();
这样做:

Clients_bs.DataSource = dt;
dgCustomers.DataSource = Clients_bs;
using(var con = new SqlConnection(dc.Con))
{
    con.Open();
    da.SelectCommand = new SqlCommand("SELECT * FROM Clients", con);

    da.Fill(dt);
}
然后它应该像文本框和网格具有相同的BindingSource一样工作;-)

编辑:

还有,请不要这样:

dgCustomers.DataSource = dt;
Clients_bs.DataSource = dt;
SqlConnection con = new SqlConnection(dc.Con);
con.Open();
da.SelectCommand = new SqlCommand("SELECT * FROM Clients", con);

da.Fill(dt);
con.Close();
这样做:

Clients_bs.DataSource = dt;
dgCustomers.DataSource = Clients_bs;
using(var con = new SqlConnection(dc.Con))
{
    con.Open();
    da.SelectCommand = new SqlCommand("SELECT * FROM Clients", con);

    da.Fill(dt);
}