当前位置: 首页 > news >正文

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
            { }
        }

 三、结果截图

很简单,希望有对需要的有帮助。

 

相关文章:

  • 迷你MVVM框架 avalonjs 沉思录 第3节 动态模板
  • systemtap -oracle
  • 各类程序员学习路线图
  • apache安装配置说明
  • Spring整合Quartz定时发送邮件
  • 基于Windows Server 2008 R2 Hyper-V环境虚拟化Centos来宾操作系统
  • ExtJS 4.2 系列教程(4):使用Ext.define自定义类
  • 第二天学习。
  • SQL Server 2012笔记分享-16:理解并设置文件组
  • XEN 环境安装
  • JAVA Collections框架
  • C++ 指针
  • mysql查看所有存储过程
  • java-第九章-循环结构进阶-三个班级每班4位同学成绩大于85的算平均分.
  • Bitmap 缩小
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [LeetCode] Wiggle Sort
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 345-反转字符串中的元音字母
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Angular Elements 及其运作原理
  • CentOS 7 修改主机名
  • Java面向对象及其三大特征
  • leetcode46 Permutation 排列组合
  • Spark学习笔记之相关记录
  • Spring Boot快速入门(一):Hello Spring Boot
  • SQLServer之创建显式事务
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端面试题总结
  • 深度学习中的信息论知识详解
  • 使用putty远程连接linux
  • 思否第一天
  • 硬币翻转问题,区间操作
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (2)Java 简介
  • (二)WCF的Binding模型
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转) RFS+AutoItLibrary测试web对话框
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .Net8 Blazor 尝鲜
  • .NET序列化 serializable,反序列化
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @Autowired和@Resource装配
  • @JsonSerialize注解的使用
  • @ModelAttribute注解使用
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [BT]BUUCTF刷题第4天(3.22)
  • [bzoj 3534][Sdoi2014] 重建