WPF 走马灯 文字滚动 自定义控件
2021-07-09 16:05
阅读:469
标签:height 描述 log lis box bsp cti 构造 ade
原文:WPF 走马灯 文字滚动 自定义控件////// Label走马灯自定义控件 /// [ToolboxBitmap(typeof(Label))] //设置工具箱中显示的图标 public class ScrollingTextControl : Label { /// /// 定时器 /// Timer MarqueeTimer = new Timer(); /// /// 滚动文字源 /// String _TextSource = "滚动文字源"; /// /// 输出文本 /// String _OutText = string.Empty; /// /// 过度文本存储 /// string _TempString = string.Empty; /// /// 文字的滚动速度 /// double _RunSpeed = 1000; DateTime _SignTime; bool _IfFirst = true; /// /// 滚动一循环字幕停留的秒数,单位为毫秒,默认值停留3秒 /// int _StopSecond = 3000; /// /// 滚动一循环字幕停留的秒数,单位为毫秒,默认值停留3秒 /// public int StopSecond { get { return _StopSecond; } set { _StopSecond = value; } } /// /// 滚动的速度 /// [Description("文字滚动的速度")] //显示在属性设计视图中的描述 public double RunSpeed { get { return _RunSpeed; } set { _RunSpeed = value; MarqueeTimer.Interval = _RunSpeed; } } /// /// 滚动文字源 /// [Description("文字滚动的Text")] public string TextSource { get { return _TextSource; } set { _TextSource = value; _TempString = _TextSource + " "; _OutText = _TempString; } } private string SetContent { get { return Content.ToString(); } set { Content = value; } } /// /// 构造函数 /// public ScrollingTextControl() { MarqueeTimer.Interval = _RunSpeed;//文字移动的速度 MarqueeTimer.Enabled = true; //开启定时触发事件 MarqueeTimer.Elapsed += new ElapsedEventHandler(MarqueeTimer_Elapsed);//绑定定时事件 this.Loaded += new RoutedEventHandler(ScrollingTextControl_Loaded);//绑定控件Loaded事件 } void ScrollingTextControl_Loaded(object sender, RoutedEventArgs e) { _TextSource = SetContent; _TempString = _TextSource + " "; _OutText = _TempString; _SignTime = DateTime.Now; } void MarqueeTimer_Elapsed(object sender, ElapsedEventArgs e) { if (string.IsNullOrEmpty(_OutText)) return; if (_OutText.Substring(1) + _OutText[0] == _TempString) { if (_IfFirst) { _SignTime = DateTime.Now; } if ((DateTime.Now - _SignTime).TotalMilliseconds > _StopSecond) { _IfFirst = true; ; } else { _IfFirst = false; return; } } _OutText = _OutText.Substring(1) + _OutText[0]; Dispatcher.BeginInvoke(new Action(() => { SetContent = _OutText; })); } }
以上放到cs文件中 然后 编译 就可以在工具箱中看到ScrollingTextControl 名称的label控件
Window x:Class="WpfDemoNew.Window21"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window21" Height="300" Width="300" xmlns:my="clr-namespace:WpfDemoNew.Control">
Grid x:Name="grid">
my:ScrollingTextControl Content="12345" Height="52" HorizontalAlignment="Left" Margin="10,10,0,0" x:Name="scrollingTextControl1" VerticalAlignment="Top" Width="121" Foreground="Black" />
Grid>
Window>
WPF 走马灯 文字滚动 自定义控件
标签:height 描述 log lis box bsp cti 构造 ade
原文地址:https://www.cnblogs.com/lonelyxmas/p/9704988.html
上一篇:用C#编写统计文本行数的代码
下一篇:c# 读取blob数据
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:WPF 走马灯 文字滚动 自定义控件
文章链接:http://soscw.com/index.php/essay/102844.html
文章标题:WPF 走马灯 文字滚动 自定义控件
文章链接:http://soscw.com/index.php/essay/102844.html
评论
亲,登录后才可以留言!