怎样使statustrip文本信息滚动显示

liulei68211 2016-10-26 08:45:19
string pjname ="";
int id =0;
string sqlselect = "select pk_iID,cprojectName,CONVERT(varchar(12),tfinish_day,105) as tfinish_day from project_information where tfinish_day<getdate()";
SqlCommand mycom = new SqlCommand(sqlselect, mycon);
SqlDataReader mydr;
mydr = mycom.ExecuteReader();
if (mydr.HasRows)
{
while(mydr.Read())
{
pjname = mydr.GetString(1);
id = mydr.GetInt32(0);
tlst3.Text = "项目'" + pjname + "'将要过期,项目编号为'" + id + "'";
MessageBox.Show("项目'" + pjname + "'将要过期,项目编号为'" + id + "'");
}
现在的问题是数据库中有多个数据,在tlsl3中显示的时候只显示最后读出的那一个,之前的都被覆盖
请问怎么解决?能让读出的所有信息滚动播出
...全文
275 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuhang08 2016-10-26
  • 打赏
  • 举报
回复
引用 7 楼 liulei68211 的回复:
怎么能让它只显示一行然后滚动显示啊,大神?
那就直接等于就行了 tlst3.Text = "项目'" + pjname + "'将要过期,项目编号为'" + id + "'"; System.Threading.Thread.Sleep(5000);//5秒出一条数据
liulei68211 2016-10-26
  • 打赏
  • 举报
回复

怎么能让它只显示一行然后滚动显示啊,大神?
xuhang08 2016-10-26
  • 打赏
  • 举报
回复
引用 5 楼 xuhang08 的回复:
tlst3.Text = "项目'" + pjname + "'将要过期,项目编号为'" + id + "'";
这里要改下tlst3.Text += "项目'" + pjname + "'将要过期,项目编号为'" + id + "'"+"\r\n";
xuhang08 2016-10-26
  • 打赏
  • 举报
回复
tlst3.Text = "项目'" + pjname + "'将要过期,项目编号为'" + id + "'";
xuhang08 2016-10-26
  • 打赏
  • 举报
回复
你要显示到TextBox的话可以用BackgroundWorker

BackgroundWorker bgw;
private void ShowResult()
{
    CheckForIllegalCrossThreadCalls = false;
    bgw = new BackgroundWorker();
    bgw.DoWork += new DoWorkEventHandler(bgwl_DoWork);
    bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgwl_RunWorkerCompleted);
    bgw.WorkerSupportsCancellation = true;
    bgw.RunWorkerAsync();
}

private void bgw_DoWork(object sender, DoWorkEventArgs e)
{
     ……//你的代码
     while(mydr.Read())
      {       
               if (bgw.CancellationPending)
                    return;
               pjname = mydr.GetString(1);                      
               id = mydr.GetInt32(0);                                         
               tlst3.Text = "项目'" + pjname + "'将要过期,项目编号为'" + id + "'";
     }
}

private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            MessageBox.Show("结束", "提示框");
        }
liulei68211 2016-10-26
  • 打赏
  • 举报
回复

TextBox只显示最后一条信息
liulei68211 2016-10-26
  • 打赏
  • 举报
回复

运行后显示

怎样能让Textbox也显示两条记录
  • 打赏
  • 举报
回复
“滚动”是个定时行为。纠结“死循环”流程是一种很低级的错误设计(有些人再用子线程去错上加错)。
一支糖包仔 2016-10-26
  • 打赏
  • 举报
回复
例如:【aaaa】aa___bbbbbb___ cccccc___ 然后删除的时候可以用substring removeat等然后在末尾追加刚刚删除的字符+=或者append等 删除的效果做成这样 【aa】___bbbbbb___ cccccc___aa
一支糖包仔 2016-10-26
  • 打赏
  • 举报
回复
我觉得还是用timer比sheep好一点,只显示最后一条数据是因为你每次给文本框赋值都把上一次的内容替换了。如果要做到滚动效果的话可以把所有的内容全部用一个字符串存起来,然后在文本框上赋值,接着根据时间控件来控制从头把文本框里面的字符删除,再在末尾追加。 代码不难,就是格式和时间要调整。
yang1216 2016-10-26
  • 打赏
  • 举报
回复
粗暴一点啊 直接timer 每秒钟改一下状态栏的字
xuhang08 2016-10-26
  • 打赏
  • 举报
回复
引用 10 楼 xuhang08 的回复:
[quote=引用 9 楼 liulei68211 的回复:] 不行啊大神,只显示最后一条信息记录 而且登录进主界面时变慢了
一开始你没描述清楚,如果是加载窗体的时候显示,那么需要使用Form_Shown事件

private void Form_Shown(object sender, EventArgs e)
        {
            ShowResult();
        }
BackgroundWorker bgw;
private void ShowResult()
        {
            CheckForIllegalCrossThreadCalls = false;
            bgw = new BackgroundWorker();
            bgw.DoWork += new DoWorkEventHandler(bgw_DoWork);
            //bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted);
            bgw.WorkerSupportsCancellation = true;
            bgw.RunWorkerAsync();
        }
private void bgw_DoWork(object sender, DoWorkEventArgs e)
        {
            ……//你的代码
             while(mydr.Read())
            {       
               if (bgw.CancellationPending)
                    return;
               pjname = mydr.GetString(1);                      
               id = mydr.GetInt32(0);                                         
               tlst3.Text = "项目'" + pjname + "'将要过期,项目编号为'" + id + "'";
            }
        }
//private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        //{
        //    MessageBox.Show("结束", "提示框");
        //}
[/quote] while(mydr.Read()) { ……// System.Threading.Thread.Sleep(5000);//while循环这里还是加个延迟,5秒显示一个 }
xuhang08 2016-10-26
  • 打赏
  • 举报
回复
引用 9 楼 liulei68211 的回复:
不行啊大神,只显示最后一条信息记录 而且登录进主界面时变慢了
一开始你没描述清楚,如果是加载窗体的时候显示,那么需要使用Form_Shown事件

private void Form_Shown(object sender, EventArgs e)
        {
            ShowResult();
        }
BackgroundWorker bgw;
private void ShowResult()
        {
            CheckForIllegalCrossThreadCalls = false;
            bgw = new BackgroundWorker();
            bgw.DoWork += new DoWorkEventHandler(bgw_DoWork);
            //bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted);
            bgw.WorkerSupportsCancellation = true;
            bgw.RunWorkerAsync();
        }
private void bgw_DoWork(object sender, DoWorkEventArgs e)
        {
            ……//你的代码
             while(mydr.Read())
            {       
               if (bgw.CancellationPending)
                    return;
               pjname = mydr.GetString(1);                      
               id = mydr.GetInt32(0);                                         
               tlst3.Text = "项目'" + pjname + "'将要过期,项目编号为'" + id + "'";
            }
        }
//private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        //{
        //    MessageBox.Show("结束", "提示框");
        //}
liulei68211 2016-10-26
  • 打赏
  • 举报
回复

不行啊大神,只显示最后一条信息记录
而且登录进主界面时变慢了
第1章(\ch01) 示例描述:介绍Visual Studio 2008的使用。 HelloWorld 第一个C#控制台应用程序 第2章(\ch02) 示例描述:学习C#基本语法实例。 CharString 演示字符和字符串的使用 Enum 演示枚举类型的使用 FuncOverride 演示函数重载的使用 Integer 演示数值类型的使用 UseArray 演示数组定义和使用 UseFuc 演示函数的调用 UseIf 演示If、Switch选择语句使用 UseWhile 演示while、loop、for循环语句使用 第3章(\ch03) 示例描述:学习C#面向对象开发实例。 AnimalPerson 演示C#类的使用 Anonymous 演示匿名类的使用 ClsIndexeer 演示类索引器的使用 ExtMethod 演示扩展方法的使用 Inherit 演示类继承的实例 NewMethod 演示new关键字覆盖父类方法实例 UseClass 演示C#类的使用实例 UseClassProperty 演示类属性(Property)的使用 UseDElegate 演示委托的使用 UseException 演示异常的使用 UseInterface 演示接口的使用 第4章(\ch04) 示例描述:介绍C#中常用集合类的使用。 CreateHashTable 演示创建Hash表实例 AddHashItem 演示添加元素到Hash表实例。 UseHashItem 演示Hash表属性、方法的使用实例 IndexList 演示通过索引访问List列表元素实例 UseList 演示List列表属性、方法的使用实例 FindList 演示在List列表中搜索元素实例 RemoveList 演示删除List列表元素实例 HashProperty 演示Hash表属性的使用实例 RemoveArrayList 演示删除ArrayList元素实例 SearchArrayList 演示在ArrayList中查找元素实例 UseArrayList 演示ArrayList属性、方法的使用实例 CreateDic 演示Dictionary字典的使用实例 第5章(\ch05) 示例描述:学习Windows Form程序和窗体控件的使用。 SimpleForm 第一个窗体应用程序实例 UseButton 演示Button按钮控件的使用实例 UseCheckBox 演示CheckBox复选框控件的使用实例 UseComboBox 演示ComboBox下拉列表控件的使用实例 UseGroupBox 演示GroupBox分组控件的使用实例 UseLabel 演示Label标签控件的使用实例 UseListBox 演示ListBox列表控件的使用实例 UseMaskedTextBox 演示MaskedTextBox格式文本框控件使用实例 UseMenu 演示MenuStrip菜单控件使用实例 UseMonthCaledar 演示MonthCaledar日历控件使用实例 UsePanel 演示Panel面板控件使用实例 UseRadioButton 演示RadioButton单选框控件使用实例 UseStatuStrip 演示StatuStrip状态栏控件使用实例 UseTabControl 演示TabControl分页控件使用实例 UseTextBox 演示TextBox文本框控件使用实例 UseToolStrip 演示ToolStrip工具栏控件使用实例 第6章(\ch06) 示例描述:学习简单窗体应用程序具体开发实例。 SimpleTextEditor 简易文本编辑器实例 第7章(\ch07) 示例描述:学习多文档窗体应用程序具体开发实例。 AdvTextEditor 改进的多文档文本编辑器实例 第8章(\ch08) 示例描述:学习自定义控件的开发和使用。 IntegerTextBox 演示数字文本框自定义控件的开发和使用实例 UseCaculatorUC 演示计算器自定义控件的开发和使用实例

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧