c#怎么让textbox里的多行文字实现自动上下滚动播出,谢谢

 我来答
Jjin001
2014-03-04 · TA获得超过568个赞
知道小有建树答主
回答量:510
采纳率:0%
帮助的人:338万
展开全部

在窗体上添加txtBox,设置为multiline,添加timer控件,然后:

public Form1()
        {
            InitializeComponent();
             this.timer1.Interval = 1000;//以毫秒为单位
            this.timer1.Start();
        }
        
        // 发送消息 
        [DllImport("user32.dll", EntryPoint = "SendMessage")]
        public static extern int SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam);
        // 获取滚动条位置 
        [DllImport("user32.dll")]
        public static extern int GetScrollPos(IntPtr hWnd, int nBar);
        // 设置滚动条位置 
        [DllImport("user32.dll")]
        static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw);

        public const int EM_LINESCROLL = 0xb6;

        /// <summary>
        /// 定时器
        /// </summary>
        /// <param name="sender">object</param>
        /// <param name="e">EventArgs</param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            int i = GetScrollPos(this.txtBoxMultiLine.Handle, 1);

            // 向下滚动一行 
            SendMessage(this.txtBoxMultiLine.Handle, EM_LINESCROLL, 0, 1); // 0,1代表垂直滚动条向下滚动

            // 判断是否有位置变化,如果没有则说明到了底部,返回开始处 
            if (i == GetScrollPos(this.txtBoxMultiLine.Handle, 1))
            {
                // 回到顶部,这里用SetScrollPos似乎有问题,滚动条和文字不是同步更新 
                this.txtBoxMultiLine.SelectionStart = 0;
                this.txtBoxMultiLine.SelectionLength = 1;
                this.txtBoxMultiLine.ScrollToCaret();
                this.txtBoxMultiLine.SelectionLength = 0;
            }
            Console.WriteLine(i);
        }
追问
这个我试过,不能用
追答
有报错还是其他原因?
匿名用户
2014-03-05
展开全部
位置属性 y=y+n timer控制
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-04
展开全部
自上而下自动滚动?
追问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式