C#设置滚动条定时滚动
1.拖一个timerl控件:
2.拖一个panel控件用于覆盖滚动条(起到隐藏滚动条的效果):
3.再拖一个skinWaterTextBox控件到panel上面(演示用),名称为skinWaterTextBox1,text属性添加内容:
4.窗体加载事件中添加启动定时器代码:
// 项目简介滚动
this.timer1.Interval = 1000;
this.timer1.Tick += timer1_Tick;//到时间的时候执行事件;
this.timer1.Start();
5.继续添加如下方法:
// 发送消息
[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;private void timer1_Tick(object sender, EventArgs e)
{int i = GetScrollPos(this.skinWaterTextBox1.Handle, 1);// 向下滚动一行SendMessage(this.skinWaterTextBox1.Handle, EM_LINESCROLL, 0, 1); // 0,1代表垂直滚动条向下滚动// 判断是否有位置变化,如果没有则说明到了底部,返回开始处if (i == GetScrollPos(this.skinWaterTextBox1.Handle, 1)){// 回到顶部,这里用SetScrollPos似乎有问题,滚动条和文字不是同步更新this.skinWaterTextBox1.SelectionStart = 0;this.skinWaterTextBox1.SelectionLength = 1;this.skinWaterTextBox1.ScrollToCaret();this.skinWaterTextBox1.SelectionLength = 0;}Console.WriteLine(i);
}private void textBox1_MouseEnter(object sender, EventArgs e)
{this.timer1.Stop();
}private void textBox1_MouseLeave(object sender, EventArgs e)
{this.timer1.Start();
}
6.分别将textBox1_MouseEnter和textBox1_MouseLeave方法添加到skinWaterTextBox1的mouseHover和mouseLeave事件:
附加panel定时循环滚动方法:
//----------------------------写在窗口加载方法中-------------------------//
this.timer2.Interval = 1000;
this.timer2.Tick += timer2_Tick;//到时间的时候执行事件
this.timer2.Start();
//----------------------------写在定时器方法中---------------------------//
/// <summary>
/// panel定时循环滚动
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer2_Tick(object sender, EventArgs e)
{int maximum = skinPanel16.VerticalScroll.Maximum;int smallChange = skinPanel16.VerticalScroll.SmallChange;int largeChange = skinPanel16.VerticalScroll.LargeChange;int minimum = skinPanel16.VerticalScroll.Minimum;int currtValue = skinPanel16.VerticalScroll.Value;// 判断是否有位置变化,如果没有则说明到了底部,返回开始处if ((currtValue + largeChange) >= maximum){skinPanel16.VerticalScroll.Value = 0;}else{skinPanel16.VerticalScroll.Value += 20;}
}
C#设置滚动条定时滚动相关推荐
- Javascript设置滚动条向上滚动的方法;JS设置滚动条滚动的代码
很久就没有碰前端的后果就是,自己被公司叫来帮忙自己结果啥都会,但是就想不起怎么操作 画布哆嗦 咱们直接来看代码 重点一:获取滚动条Y轴的数据 这个方法有很多,我就不一一讲述了,毕竟结果都一样就好 直接 ...
- duilib设置滚动条自动滚动到底
控件属性中添加 vscrollbar="true" autovscroll="true" 分别是启用竖向滚动条,是否随输入竖向滚动
- css给超出内容设置滚动条和去除滚动条显示:
盒子内部元素溢出自动生成滚动条,使用: overflow: scroll; .drawerBox{width: 300px;height: 500px;border: 1px solid red;o ...
- CSS_如何设置滚动条样式_超出左右滚动
CSS-界面滚动时不显示滚动条 设置滚动条的样式: div::-webkit-scrollbar {//width: 0;height: 0; } 关于::-webkit-scrollbar ::-w ...
- android设置滚动条样式,Android零基础入门|滚动视图ScrollView-设置滚动条样式
前面几期学习了ProgressBar系列组件.ViewAnimator系列组件.Picker系列组件和时间日期系列组件,接下来几期继续来学习常见的其他组件. 一.ScrollView概述 从前面的学习 ...
- html滚动字幕怎么设置大小,css怎么设置滚动条宽度?
现在很多项目中都用到了滚动条,而且在有的时候,用到的是模拟滚动条,很多大型邮箱都是利用css样式来设置的,那么CSS如何设置滚动条宽度呢? css中可以使用::-webkit-scrollbar伪类选 ...
- 设置滚动条滚动但不显示滚动条
/*设置滚动条滚动但不显示 开始*/ .projectpanel{width: 100%;overflow-y:scroll;overflow-X:hidden;}.projectpanel::-we ...
- 怎样设置网页纵向滚动 css,CSS 怎么设置网页下拉条 (滚动条) 样式?
CSS 怎么设置网页下拉条 (滚动条) 样式? 很多朋友在网页设计中要自定义下拉条 (滚动条) 样式的情景, 下拉条的样式我们可以通过 CSS 来控制的, 下拉条能不能换颜色或者做的更好看一些呢? 那 ...
- Qt图片定时滚动播放器+透明过渡动画
目录 参考 结构 PicturePlay.pro main.cpp myqlabel.h 自定义QLabel myqlabel.cpp自定义QLabel pictureplay.h picturepl ...
最新文章
- Windows 2003 Server 设置技巧
- ORACLE-osi分层模型.md
- hibernate 高级映射 --张国亮总结第一季
- 移动App的发展趋势
- 使用计算机来解决实际问题首先要完成,《操作系统》试题库-填空题
- fitbit手表中文说明书_如何获取和分析Fitbit睡眠分数
- 并行编程2——多核体系架构
- CSDN博客投票活动开始了
- SpringBoot2 集成日志,复杂业务下的自定义实现
- 用组策略发布软件的简单解决办法
- linux syslog 3
- 就算神游 之五:东京迪斯尼乐园 1
- 11. JavaScript 对象
- 智能优化算法:黑猩猩优化算法-附代码
- jvm系列:Java服务GC参数调优案例
- Google--PageRank(网页级别)技术解密[转]
- scala学习之旅(十三):隐式转换和隐式参数
- 联想小新 Air 13 (Pro) 6,7代笔记本安装Win7系统
- Spring Getting Started Guides migrated to Asciidoctor
- 如何在地图上显示多个红包商店 vue