使用WPF的TextBox显示自定义日志
TextBox中显示各种日志,随滚动条的位置不同,日志显示需要有区别: 竖直滚动条在最下面时,最新日志添加到最末行,并显示最新日志;竖直滚动条不在最下面时,最新日志同样添加到最末行,但可视区域显示的日志始终不变化位置。

  • 滚动条在最底端

    上下两张图,滚动条在最下方,最末行更新显示最新日志

  • 滚动条不在最底端

    上下两张图,滚动条在变化,但可视区域显示内容没有变化

小二,上代码
1)MainWindow.xaml

<Window x:Class="LogText.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="日志文本框" Height="350" Width="200"><Grid><TextBox Name="txtLog" AcceptsReturn="True" TextWrapping="Wrap" Foreground="Green"Grid.Row="1" Grid.ColumnSpan="2"VerticalScrollBarVisibility="Auto"HorizontalScrollBarVisibility="Auto"/></Grid>
</Window>

2)MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace LogText
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();ThreadPool.QueueUserWorkItem(sender =>{while (true){this.txtLog.Dispatcher.BeginInvoke((Action)delegate{this.txtLog.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff\r\n"));if (IsVerticalScrollBarAtBottom){this.txtLog.ScrollToEnd();}});Thread.Sleep(600);}});}/// <summary>/// 日志文本框滚动条是否在最下方/// true:文本框竖直滚动条在文本框最下面时,可以在文本框后追加日志/// false:当用户拖动文本框竖直滚动条,使其不在最下面时,即用户在查看旧日志,此时不添加新日志,/// </summary>public bool IsVerticalScrollBarAtBottom{get{bool atBottom = false;this.txtLog.Dispatcher.Invoke((Action)delegate{//if (this.txtLog.VerticalScrollBarVisibility != ScrollBarVisibility.Visible)//{//    atBottom= true;//    return;//}double dVer = this.txtLog.VerticalOffset;       //获取竖直滚动条滚动位置double dViewport = this.txtLog.ViewportHeight;  //获取竖直可滚动内容高度double dExtent = this.txtLog.ExtentHeight;      //获取可视区域的高度if (dVer + dViewport >= dExtent){atBottom = true;}else{atBottom = false;}});return atBottom;}}}
}

wpf TextBox日志文本框相关推荐

  1. WPF中的文本框改变事件

    WPF中的文本框改变事件 开发工具与关键技术:Visual Studio 2017.WPF 撰写时间:2019年8月16日 下面我们做一个文本框的改变事件,在一个文本框输入数值,另一个文本框会发生改变 ...

  2. RichView TextBox Items 文本框

    RichView TextBox Items 文本框 RichView的文本框(TextBox)作为文档的一个Item,运用于是旁注的简化标注. 该项目插入的位置通常可见的文本但是,它显示时与背景可以 ...

  3. TextBox 单行文本框,多行文本框

    把TextBox的TextMode属性设置为MultiLine就变成了多行文本了 SingleLine - 默认.表示单行输入模式. MultiLine - 表示多行输入模式. Password - ...

  4. WPF中给文本框TextBox设置提示文字

    <TextBlock Text="模板名称" Margin="20" ></TextBlock><TextBox x:Name=& ...

  5. WPF 禁止在文本框中输入数字

    private void textBox1_PreviewTextInput(object sender, TextCompositionEventArgs e){e.Handled = System ...

  6. 2、Web 窗体的基本控件——文本框控件(TextBox)

    2.Web 窗体的基本控件--文本框控件(TextBox) 文本框控件(TextBox) 前端 <%@ Page Language="C#" AutoEventWireup= ...

  7. java pdf表单域实现_Java 创建PDF表单域 - 文本框、复选框、列表框、组合框、按钮等...

    表单域包括文本框.复选框.列表框.组合框.按钮和签名域等,主要用于收集用户填写或选择的数据.这篇文章将介绍如何在Java应用程序中给PDF文档添加表单域. 导入jar文件 本文所使用的PDF类库是Fr ...

  8. WPF清空textbox文本框

    1. 第一步:将每个窗体当中的网格布局控件--Grid命名 2. 3. 4. 5. 第二步:在UI层,添加清空的类,以及判空的类 6. 7. 第三步:在两个类里面添加命名空间 8. 9. 这两个引用是 ...

  9. WPF 文本框添加水印效果

    有的时候我们需要为我们的WPF文本框TextBox控件添加一个显示水印的效果来增强用户体验,比如登陆的时候提示输入用户名,输入密码等情形.如下图所示: 这个时候我们除了可以修改TextBox控件的控件 ...

最新文章

  1. 2017 ACM ICPC Asia Shenyang Regional Contest 题解(10 / 13)【每日亿题2 / 16】
  2. jSearch(聚搜) v1.1.0 发布,全新视觉体验
  3. 2016全球数据新闻奖(DJA)颁布, 12个获奖作品全剖析
  4. SecurityManager安全管理器
  5. [html] 在主框架下引入的iframe,如果检测这个iframe是否能打开,如果打不开则跳到404页面
  6. javascripts-for循环-while循环-标签的选择与操作
  7. 一加6手机突然没信号没服务器,如何从技术上解决手机信号问题?一加6替你想到了...
  8. 两年不工作、月花200块,90后躺平学大师已有了一批「信徒」
  9. C++ linux系统api
  10. Android大图片裁剪之手机拍照和从相册中选择注意点
  11. 【日常小结】VB.NET下操作Access数据库
  12. BlazeDS 整合 Flex
  13. H3C基础配置命令(一)
  14. 51 Nod 一维战舰
  15. 手机扫描二维码登录原理
  16. QT5单元测试(按键测试)
  17. 从趋势、风格和文案三方面,分析短视频封面这样设计更吸引人。
  18. 机器学习3决策树算法模型
  19. 单单训练营 第四期 第一课 做自己的CEO
  20. Spring05:面向切面编程

热门文章

  1. Java 2 实用教程
  2. mysql 数据分组_详解MySQL 数据分组
  3. 面向对象和面向过程~~编程思想
  4. 微信小程序实现每日签到、连续签到
  5. android 字体大小换算,Android单位换算与UI适配
  6. 华中科技大学赛尔宽带登录六维空间
  7. 计算机图形学(曲线造型)
  8. VS Code 空闲时的 CPU 使用率是 13%
  9. 【软件工程】什么?你还在复习软工但是不知道背哪里?速看!--电子科技大学2023年期末考试
  10. leetcode-1833. 雪糕的最大数量(排序+贪心)