WPF RichTextBox 做内容展示框 滚动条控制判定是否阅读完成
一、项目背景:
最近,做项目,因为是金融项目,客户登录交易的时候,有一个提示框,就是告知客户要“入市需谨慎”等等,想必大家都遇到这样的场景,当然,这种提示是没人会看的,不过作为交易所,这样的提示又必不可少的。
其实只有一个要求:
必须客户读完“确定”按钮和CheckBox才会生效----客户只要把滚动条拉倒底部,我们就认为他已经读完了
二、项目讲解
1.前端代码
前端代码,没有什么好解释的,很简单,就是一个RichTextBox
<RichTextBox Grid.Row="0" Grid.ColumnSpan="2" x:Name="rtxtRiskContent" HorizontalAlignment="Left"
AllowDrop="True" IsReadOnly="True" VerticalAlignment="Top" >
<FlowDocument x:Name="fdRiskContent" >
<Paragraph TextBlock.FontSize="20" TextAlignment="Center" TextBlock.FontWeight="Bold">
风 险 提 示 书
</Paragraph>
<Paragraph TextBlock.FontSize="14">
<TextBlock Padding="20 0,0,0" TextWrapping="Wrap" Text="都普特商品电子交易中心有限公司(以下简称"交易中心")上市商品的"/>
交易存在较大的风险,为控制交易客户(包括但不限于企业交易客户、个人交易客户)的风险,维护交易客户的合法权益,交易中心特作以下风险提示:
<LineBreak/>
<LineBreak/>
一、参与交易中心上市品种的交易对交易风险判断、风险承受、风险控制有较高要求;不具备相应风险判断、风险承受和风险控制能力的交易客户,谨慎入市。
<LineBreak/>
<LineBreak/>
二、因交易有较高风险,下列资金不适合入市交易:
用于治疗疾病、养老、购房、缴纳学费等生活必须支出的资金;贷款、借款及受他人委托管理的非自有资金;
交易中心建议交易客户入市交易的资金总量不应超过自有存量资金的30%。
<LineBreak/>
<LineBreak/>
三、交易客户应当妥善保管自有交易账号的交易密码、资金密码及其他账户密码,不应委托任何机构或个人进行交易和资金管理。
<LineBreak/>
<LineBreak/>
四、交易客户应认真学习了解现货交易市场的规则和行情,根据个人投资经验、投资目标、财务状况自主做出交易选择,不应轻信任何机构和个人做出的收益承诺、行情分析和交易操作建议。
<LineBreak/>
<LineBreak/>
五、上述风险提示为交易开户前必读之内容,个人交易客户开户成功视为已完全理解交易中心风险提示的内容,并承诺遵守。个人交易客户因违反上述承诺导致亏损和其他交易损失的,交易中心不承担任何责任。
<LineBreak/>
</Paragraph>
</FlowDocument>
</RichTextBox>
<CheckBox x:Name="chkRiskTip" Grid.Row="2" Grid.ColumnSpan="2" IsEnabled="False" Content="本人已仔细阅读完全理解风险提示的所有内容,全面了解交易风险,并承诺按风险提示书
控制交易风险,因违反风险提示书的建议进行开户交易导致损失的,一切损失本人自愿承担。" />
<Button x:Name="btnAgreen" Grid.Row="4" Grid.Column="0" Width="100" Content="同 意" IsEnabled="False" ></Button>
<Button x:Name="btnNoAgreen" Grid.Row="4" Grid.Column="1" Width="100" Content="不同意" ></Button>
<Label Margin="0,0,100,0" HorizontalAlignment="Right" Grid.Row="6" Grid.ColumnSpan="2" Foreground="Red" Content="提示:完整阅读风险提示书后才可操作按钮" />
2.后台实现
我们主要要实现RichTextBox的事件,我们把事件放在资源文件里:
<Grid.Resources>
<Style TargetType="{x:Type RichTextBox}">
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
<EventSetter Event="ScrollViewer.ScrollChanged" Handler="RichTextBox_ScrollChanged"/>
</Style>
</Grid.Resources>
3.实现事件
private void RichTextBox_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
try
{
ScrollViewer sv = e.OriginalSource as ScrollViewer;
if (sv != null && e.VerticalChange != 0)
{
if (sv.VerticalOffset == sv.ExtentHeight - sv.ViewportHeight)//到底
{
this.chkRiskTip.IsEnabled = true;
}
}
}
catch
{ }
}
三、结果截图

很简单,希望有对需要的有帮助。
WPF RichTextBox 做内容展示框 滚动条控制判定是否阅读完成的更多相关文章
- WPF RichTextBox读取存储文本的方法和常用属性
1. 取得已被选中的内容: (1)使用 RichTextBox.Document.Selection属性(2)访问RichTextBox.Document.Blocks属性的“blocks”中的Tex ...
- WPF RichTextBox 控件常用方法和属性
以下内容转自 http://blog.csdn.net/yulongguiziyao/article/details/25330551. 1. 取得已被选中的内容: (1)使用 RichTextBox ...
- WPF RichTextBox相关总结
由于公司涉及到聊天对话框的功能,就想到了RichTextBox,查阅相关资料,总结下: 一.RichTextBox的内容相关的类 1.1RichTextBox的内容结构 RichTexBox是个可编辑 ...
- WPF RichTextBox自动调整高度
原文:WPF RichTextBox自动调整高度 大概两年前的这个时间段,当时做项目遇到了一个问题:环境VS2005.WinForm,需要RichTextBox根据内容自动调整高度.当时用了各种方法都 ...
- WPF RichTextBox 当前光标后一个字符是文档的第几个字符
WPF RichTextBox 当前光标后一个字符是文档的第几个字符 运行环境:Win10 x64, NetFrameWork 4.8, 作者:乌龙哈里,日期:2019-05-05 参考: TextP ...
- Selenium入门11 滚动条控制(通过js)
这一节要有js基础.做web端的UI自动化必须要有html,css,javascript前端基础. 滚动条控制: 1 移动垂直滚动条 document.documentElement.scrollTo ...
- WPF RichTextBox 禁止换行
原文:WPF RichTextBox 禁止换行 这个问题困扰了好久,进过不断的努力,终于解决了 <RichTextBox Margin="0,44,10,0&quo ...
- 将RichTextBox的内容直接写入数据库:
将RichTextBox的内容直接写入数据库: private void button1_Click(object sender, EventArgs e) { System.IO.Memory ...
- WPF RichTextBox的使用总结
RichTextBox内容模型 RichTextBox 支持基于块的内容模型. RichTextBox 的内容属性为 Blocks,这是 Paragraph 元素的集合Paragraph元素可包含 ...
随机推荐
- Java 之 I/O流
1.流 a.分类:①字节流:InputStream.OutputStream ②字符流:Reader.Writer b.选择:①判断是 输入 还是 输出 (站在程序的立场上) ②判断是 字节 还是 字 ...
- asp.net执行SqlServer存储过程!(详解!)
ASP.NET执行存储过程 一. 执行一个没有参数的存储过程的代码如下: connectionString为连接字符串 SqlConnection conn=new SqlConnection(con ...
- 安装hadoop+zookeeper ha
安装hadoop+zookeeper ha 前期工作配置好网络和主机名和关闭防火墙 chkconfig iptables off //关闭防火墙 1.安装好java并配置好相关变量 (/etc/pro ...
- java 对List进行物理分页
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ pac ...
- 一些VS2013的使用技巧
作者:h46incon的Blog 1. Peek View 可以在不新建TAB的情况下快速查看.编辑一个函数的代码. 用法:在光标移至某个函数下,按下alt+F12. 然后在Peek窗口里可以继续按a ...
- 使用IntelliJ IDEA 配置Maven(入门)【转】
1.在IntelliJ IDEA中配置maven 打开-File-Settings 2.新建maven WEB项目 打开-File-New-Project 点击NEXT 点击NEXT 添加的配置 ...
- 接口测试第三课(HTTP协议简介) -- 转载
一.打开百度URL详解: 用浏览器打开百度网址,输入任意关键字搜索后: 详细URL地址复制出来如下 https://www.baidu.com/s?ie=utf-8&f=8&rsv_b ...
- java-并发-高级并发对象2
浏览以下内容前,请点击并阅读 声明 并发集合 java.util.concurrent包包含了许多对于java集合框架的补充,根据提供的接口可以将这些集合分为以下几类: BlockingQueue 定 ...
- IE浏览器下一些图片无法显示的(在其他非ie浏览器能够显示)解决办法
因为要完成本学期老师布置得网页作业,做完的时候进行网页的兼容性测试,chrome和360都没有问题. ie下却有两个图片无法显示. 一般这种情况代码是没有什么问题的,一般是图片本身的问题, 当我用Ps ...
- 给notepad++添加右键菜单
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\Shell\NotePad++] [HKEY_CLASSES_ROOT\*\Shel ...