代码改变世界

WPF RichTextBox 做内容展示框 滚动条控制判定是否阅读完成

2016-09-02 10:45 by 随风浪迹天涯, 阅读(1738) 阅读, 推荐(2) 推荐, 收藏, 编辑

一、项目背景:

最近,做项目,因为是金融项目,客户登录交易的时候,有一个提示框,就是告知客户要“入市需谨慎”等等,想必大家都遇到这样的场景,当然,这种提示是没人会看的,不过作为交易所,这样的提示又必不可少的。

其实只有一个要求:

         必须客户读完“确定”按钮和CheckBox才会生效----客户只要把滚动条拉倒底部,我们就认为他已经读完了

二、项目讲解

1.前端代码

前端代码,没有什么好解释的,很简单,就是一个RichTextBox

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<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的事件,我们把事件放在资源文件里:

1
2
3
4
5
6
<Grid.Resources>
           <Style TargetType="{x:Type RichTextBox}">
               <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
               <EventSetter Event="ScrollViewer.ScrollChanged" Handler="RichTextBox_ScrollChanged"/>
           </Style>
       </Grid.Resources>

 3.实现事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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+通过配置文件生成菜单(Menu)+源码

2015-08-17 00:26 by 随风浪迹天涯, 阅读(5242) 阅读, 推荐(6) 推荐, 收藏, 编辑
摘要:这个月做项目,遇到过一个通过配置文件来生成菜单的解决方案,感觉挺优雅的,特地放到博客园来,以飨读者。说来惭愧,以前做的项目都没有这样用过,都是固定死了。如果后续有需要加入菜单,还得在重新修改UI,然后提交code,才OK。但是如果通过配置文件的方式进行操作,则可以不用动code,只需要修改配置文件即... 阅读全文

程序员也可以浪漫----倾情奉献一份你值得拥有的浪漫网站源码(情人节快来了~)

2015-02-07 15:04 by 随风浪迹天涯, 阅读(9129) 阅读, 推荐(24) 推荐, 收藏, 编辑
摘要:先说个好消息吧,我2015年2月12号就要订婚啦~~总算脱离程序员光棍生涯~~不得不说这个网站给了我很大的帮助!所以,我就想把这份源码也园子里的广大朋友们,希望在你们的爱情之路上,能发挥一点点的能量,我足矣~ 先祝大家 情人节快乐~~咱们程序员也很浪漫的~哈哈。。 一、申明 申明一、此网站的很多内容 阅读全文

这世界唯一的你:最美程序媛走红网络

2013-11-04 14:21 by 随风浪迹天涯, 阅读(1898) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:此片文章不涉及技术哦。。。只发图。。星期一,大伙儿看看妹子吧。网络上一组名为《这世界唯一的你》的相册最近火红,里面上百张照片都是同一个女孩,这女孩一脸素净,有网友惊呼无妆容的清纯脱俗美感,比起像叶一茜、刘诗 诗、宋茜等娱乐圈浓妆PS的明星脸,更让人觉得惊艳;此外,她还是个程序员,让网友不禁叹道,“原来程序员不光是抠脚大汉!”封她为“代码女神”。最后一张,她和她的男朋友。。。亮瞎你的眼 阅读全文

20分钟读懂程序集

2013-09-16 10:29 by 随风浪迹天涯, 阅读(19374) 阅读, 推荐(109) 推荐, 收藏, 编辑
摘要:前言说到程序集,我刚开始对这个名词特别的郁闷!~。然后 前些天花了些时间 好好读了一下,现在比较清晰了,把一些书上看到的 记下来,以飨读者。希望没浪费你们的时间。一。程序集是什么程序集,说白了就是一个 *.dll 或者 *.exe为后缀的文件。当然,如楼下朋友所说,是基于.NET平台的!~。谢谢。程序集,包括以下部分:Windows 文件首部CLR 文件首部元数据程序集清单可选的内嵌资源Windows文件首部(知道有这么一个东西就行):就是告诉windows操作系统,本应用程序是ASP.NET 还是Winform还是控制台应用程序。那怎么查文件首部信息呢?打开VS的命令行工具 然后输入dump 阅读全文

简介4种同步方法的实现

2013-09-06 14:00 by 随风浪迹天涯, 阅读(1092) 阅读, 推荐(1) 推荐, 收藏, 编辑
摘要:问题重现static void Main() { Thread[] theads = new Thread[10]; Printer p = new Printer(); for (int i = 0; i < 10; i++) { theads[i] = new Thread(new ThreadStart(p.DisplayDigites)); theads[i].Name = string.Format("thread work: {0}", i); } foreach (Thread t in... 阅读全文

共享文件夹:The user has not been granted the requested logon type at this computer

2013-08-12 18:16 by 随风浪迹天涯, 阅读(2767) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:场景重现今天做一个项目测试,要用到虚拟机,于是在虚拟机(XP 32)上新建了一个共享的文件夹。然后我在Win7 机器上访问它得到如下的error 消息:后来查到MSDN 上网站上有一个信息:MSDN 上的文章: The user has not been granted the requested logon type at this computer总的MSDN上的文章是说下面的这个,在“Allow log on locally”中加入需要进行log的用户,但是我试了,单单只是这样设置没效果,还需要我下面的2个设置。后来我在Xp和Win7电脑中更改了另外安全设置就好了一。Xp电脑(有共享文件 阅读全文

【30分钟学习】二种简单实用的方法实现多语言解决方案(源码在附件)

2013-08-02 15:46 by 随风浪迹天涯, 阅读(2071) 阅读, 推荐(2) 推荐, 收藏, 编辑
摘要:方案一。使用.resources资源文件先给张我们结果图吧1.新建2个txt的文本文件中文和英文各一个,把需要替换的句子写到里面去!~。格式如下,000=输入名字001=输入密码002=输入邮箱003=提交004=重置005=英文006=汉语然后,进行保存。这里需要特别的注意,保存的格式是:文件名+“.语言区域性”比如常见的 中文是zh-CN,英文是en-US本文的是:resource.zh-CN.txt和resource.en-US.txt具体的“语言区域性”可以在这里进行查找:猛击查看语言区域性啊2.生成相应的资源文件使用语言VS资源生成工具(Resource generator (Res 阅读全文

Linq操作非泛型集合

2013-07-25 16:28 by 随风浪迹天涯, 阅读(640) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:我们都知道,Linq能查询泛型集合,确切的说是:LINQ能实现查询泛型对象或者实现了IEnumerable。但是,很遗憾的是诸如ArrayList这样的非泛型集合并没有实现IEnumerable。那咋办呢?总不能把这么绚丽的Linq技术对非泛型关上大门把!~其实,方法还是有的。场景还原:定义一个car的类:class Car { public int CurrentSpeed; public int MaxSpeed; public string PetName; }对ArrayList 装载一些数据:ArrayList cars = new ArrayList(); ... 阅读全文

跟我一起学Oracle 11g【11】----Oracle 中的事务

2013-05-04 14:52 by 随风浪迹天涯, 阅读(2952) 阅读, 推荐(8) 推荐, 收藏, 编辑
摘要:前言好些天,没有更新这个系列了。最近工作出差,而且在几个城市走来走去,在而且是自己也在学习Spring.Net,所以时间比较少呢!但,不管怎么样,我都会把这个系列更新完成。5.1节过了,祝大家节后快乐。1。什么是数据库事务数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。---【来自百度百科】2。事务的特点原子性(atomicity) 事务必须是原子工作单元;. 阅读全文
点击右上角即可分享
微信分享提示