原文:WPF 走马灯 文字滚动 自定义控件

    /// <summary>
/// Label走马灯自定义控件
/// </summary>
[ToolboxBitmap(typeof(Label))] //设置工具箱中显示的图标
public class ScrollingTextControl : Label
{
/// <summary>
/// 定时器
/// </summary>
Timer MarqueeTimer = new Timer();
/// <summary>
/// 滚动文字源
/// </summary>
String _TextSource = "滚动文字源";
/// <summary>
/// 输出文本
/// </summary>
String _OutText = string.Empty;
/// <summary>
/// 过度文本存储
/// </summary>
string _TempString = string.Empty;
/// <summary>
/// 文字的滚动速度
/// </summary>
double _RunSpeed = ; DateTime _SignTime;
bool _IfFirst = true; /// <summary>
/// 滚动一循环字幕停留的秒数,单位为毫秒,默认值停留3秒
/// </summary>
int _StopSecond = ; /// <summary>
/// 滚动一循环字幕停留的秒数,单位为毫秒,默认值停留3秒
/// </summary>
public int StopSecond
{
get { return _StopSecond; }
set
{
_StopSecond = value;
}
} /// <summary>
/// 滚动的速度
/// </summary>
[Description("文字滚动的速度")] //显示在属性设计视图中的描述
public double RunSpeed
{
get { return _RunSpeed; }
set
{
_RunSpeed = value;
MarqueeTimer.Interval = _RunSpeed;
}
} /// <summary>
/// 滚动文字源
/// </summary>
[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;
}
} /// <summary>
/// 构造函数
/// </summary>
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() + _OutText[] == _TempString)
{
if (_IfFirst)
{
_SignTime = DateTime.Now;
} if ((DateTime.Now - _SignTime).TotalMilliseconds > _StopSecond)
{
_IfFirst = true; ;
}
else
{
_IfFirst = false;
return;
}
} _OutText = _OutText.Substring() + _OutText[]; 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>

最新文章

  1. 白话Https
  2. [转] 如何设置Eclipse的上网代理
  3. [新手学Java]使用beanUtils控制javabean
  4. 浅谈用java解析xml文档(四)
  5. CSS書寫規範及CSS Hack
  6. HDU 4508 沼泽湿地系列故事——记住减肥I (2013腾讯编程马拉松预赛第一)
  7. PAT (Advanced Level) 1093. Count PAT&#39;s (25)
  8. python django 使用 haystack:全文检索的框架
  9. PHP求解一个值是否为质数
  10. pupeteer初体验
  11. HTML5通讯协议——WebSocket
  12. Java当中的IO三
  13. webpack模塊打包機
  14. idea常用快捷键及操作
  15. 【APP测试(Android)】--交叉事件
  16. springboot+cloud 学习(四)Zuul整合Swagger2
  17. Applegate 方法使用
  18. C# SQL查询结果ToDataTable
  19. Intellij idea 配置热部署
  20. Windows hackson (rundll32--ADS)

热门文章

  1. [Pug] Template Engine -- Jade/ Pug
  2. LLRB——红黑树的现代实现
  3. windows go 安装
  4. IfSpeed 带宽计算
  5. java的对象锁和对象传递
  6. How to use ftp in a shell script
  7. JNI:no implementation found in native...
  8. 常用服务器ftp、ssh
  9. signed 与 unsigned 有符号和无符号数
  10. java 原子量Atomic举例(AtomicReference)