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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#怎么让textbox里的多行文字实现自动上下滚动播出,谢谢相关的知识,希望对你有一定的参考价值。

在窗体上添加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);
        

追问

这个我试过,不能用

追答

有报错还是其他原因?

参考技术A 位置属性 y=y+n timer控制 参考技术B 自上而下自动滚动?追问

在C#中,怎么调整textbox中的文字行间距

大侠们,详细的说说···

参考技术A 没法直接定义,只能重绘。个人感觉行间距还好啊,要不你试试richtextbox。。。本回答被提问者采纳 参考技术B textbox 和 RichTextBox 都没有直接设置行距的函数, 不过,可以用RichTextBox, 使用rtf控制行距, 具体:rtf代码中在\pard(段落格式设置)后添加\sl360\slmult1(行距360, 使用此行距),C#实现代码:
richTextBox.Text = "..."; // 设置RichTextBox的纯文本
richTextBox.Rtf.Replace(@"\pard", @"\pard\sl360\slmult1"); // 给rtf加上行距设置
参考技术C 他有点2 textbox 没有调整行高的属性 你可以调下文字的大小追问

文字是大还是小,行与行之间都是太密了?
您有好办法吗?

参考技术D line-height:25px;追问

怎么设置啊?我是初学的

追答

style="line-height:25px; "

追问

不是webform啊,是winform程序

以上是关于c#怎么让textbox里的多行文字实现自动上下滚动播出,谢谢的主要内容,如果未能解决你的问题,请参考以下文章

c# 如何使用上下键在TextBox之间移动

表格怎么让文字居中?

c# winform 中怎样让一个文本框可以用扫描枪输入,而不能用键盘输入

如何解决Word表格中字体数字上下不居中

C# RDLC报表如何调整textbox内多行文字的行间距?

c# winformz中 textbox 控件 文字如何垂直居中?