我在c#中创建了一个聊天应用程序。消息将存储到SQL Server数据库中,消息也将从数据库中读出到客户端应用程序。作为控件,有一个ListBox项,它包含从数据库读取的消息,以及一个用于发送消息的文本框(将它们插入数据库以便稍后读出)。要从数据库中读取消息,请使用读取数据库中消息字符串的sqlDataReader对象。我已经在表单中添加了一个计时器,并将其间隔设置为1000毫秒。
计时器功能包含下一个代码:
lblUsername.Text = "Ingelogd als: " + User.username.ToString();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = @"Integrated Security=True; Initial Catalog=Chat; Data Source=DESKTOP-9S5PJV3\SQLEXPRESS";
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from tblMessages where messageReceiver=" + "'" + User.username.ToString() + "'";
SqlDataReader dr = cmd.ExecuteReader();
listBox1.SelectedIndex = listBox1.Items.Count - 1;
listBox1.Items.Clear();
while (dr.Read())
{
listBox1.Items.Add(dr.GetString(4) + " zegt: " + dr.GetString(1));
listBox1.Items.Add("");
}
ListBox1.Items.Clear()清除所有消息,然后再次读取它们。如果我不使用Clear(),ListBox将包含每秒重复的所有消息。
我已将listBox1.SelectedIndex = listBox1.Items.Count - 1;
用于自动滚动功能,但这不起作用(我认为因为每次都需要清除列表框)。有没有办法自动滚动列表框?目前它不会向下滚动,列表框会闪现...... [/ p>