как обновить значения меток из listbox c#

Hello guys im lookin for any help about my code I need to solve about refreshing values in my labels from listbox. Работаю над игроками со своей статистикой, матчами и т.д.. и я хочу видеть его конкретные результаты для матча (который я могу выбрать из списка) и видеть его убийства/смерти в то время как я меняю матчи, у кого-нибудь есть идея? Спасибо за внимание. Извините за мой английский. Lanky-Lans, Jménohráče-имя, Věk-возраст, Země-страна. Počet killu означает количество убийств, а другой означает количество смертей, Veškeré odehrané lanky означает все его сыгранные матчи.

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    connection = new SqlConnection(connectionstring);
    try
    {
        connection.Open();
        var q = "SELECT * FROM Lanky";
        var query = new SqlCommand(q, connection);
        using (var dr = query.ExecuteReader())
        {
            var success = dr.Read();
            if (success)
            {
                label8.Text = dr["Kills"].ToString();
                label9.Text = dr["Deaths"].ToString();
                label1.Text = dr["Jménohráče"].ToString();
                label2.Text = dr["Věk"].ToString();
                label3.Text = dr["Země"].ToString();

            }
        }
        connection.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show("error " + ex);
    }

}

[https://i.stack.imgur.com/BiEHo.png]

1 ответ

  1. должен быть метод, который заполняет listbox и другой, который срабатывает на ListBox select. Вы поместили получение данных в событие ListBox changed. Сделайте что-то вроде этого:

    сначала переместите код из listbox1_selecteditemchanged в событие Form_Load, подобное этому:

     private void Form1_Load(object sender, EventArgs e)
            {
                connection = new SqlConnection(connectionstring);
                try
                {
                    connection.Open();
                    var q = "SELECT * FROM Lanky";
                    var query = new SqlCommand(q, connection);
                    using (var dr = query.ExecuteReader())
                    {
    
                        ListBox1.Items.Clear();
                        while (dr.Read())
                        {
                            ListBox1.Items.Add(dr["Jménohráče"]);
                        }
                    }
    
                    connection.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("error " + ex);
                }
    
            }
    

    Далее, в selectedItem изменен сделать что-то подобное:

    private void ListBox1_SelectedItemChanged(object sender, EventArgs e)
    {
        connection = new SqlConnection(connectionstring);
        try
        {
            connection.Open();
            var q = "SELECT * FROM Lanky WHERE Jménohráče  = @jh";
            var query = new SqlCommand(q, connection);
            query.Parameters.Add("@jh", ListBox1.SelectedValue.ToString())
            using (var dr = query.ExecuteReader())
            {
    
                ListBox1.Items.Clear();
                dr.Read();
    
                label8.Text = dr["Kills"].ToString();
                label9.Text = dr["Deaths"].ToString();
                label1.Text = dr["Jménohráče"].ToString();
                label2.Text = dr["Věk"].ToString();
                label3.Text = dr["Země"].ToString();
    
            }
    
            connection.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("error " + ex);
        }
    
    }