WPF RichTextBox 做內容展示框 滾動條控制判定是否閱讀完成

来源:http://www.cnblogs.com/damonlan/archive/2016/09/02/5832593.html
-Advertisement-
Play Games

一、項目背景: 最近,做項目,因為是金融項目,客戶登錄交易的時候,有一個提示框,就是告知客戶要“入市需謹慎”等等,想必大家都遇到這樣的場景,當然,這種提示是沒人會看的,不過作為交易所,這樣的提示又必不可少的。 其實只有一個要求: 必須客戶讀完“確定”按鈕和CheckBox才會生效 客戶只要把滾動條拉 ...


一、項目背景:

最近,做項目,因為是金融項目,客戶登錄交易的時候,有一個提示框,就是告知客戶要“入市需謹慎”等等,想必大家都遇到這樣的場景,當然,這種提示是沒人會看的,不過作為交易所,這樣的提示又必不可少的。

其實只有一個要求:

         必須客戶讀完“確定”按鈕和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
            { }
        }

 三、結果截圖

很簡單,希望有對需要的有幫助。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Ubuntu 16.04系統在一開始安裝完成時是無法切換到 root 用戶的,普通用戶需要使用 root 許可權的時候通常需要在執行命令前加 "sudo",需要經常使用root許可權的伙伴可能會覺得這會讓我們的蛋蛋同學很憂傷...... 其實,要解決蛋蛋同學的問題很簡單,只要給 root 配一個密碼即可 ...
  • 整理Apache+Mysql+PHP+PHPWind(Apache+PHP集成環境) 一、情況簡述: 1、虛擬機VM上面CentOS 2、全部yum安裝(yum安裝與源碼安裝的安裝路徑不同) 二、操作步驟簡述 安裝Apache(httpd) 安裝Mysql(mysqld) 安裝PHP(phpd-fd ...
  • 使用HttpListener實現簡單的Http服務 HttpListener提供一個簡單的、可通過編程方式控制的 HTTP 協議偵聽器.使用它可以很容易的提供一些Http服務,而無需啟動IIS這類大型服務程式。使用HttpListener的方法流程很簡單:主要分為以下幾步 創建一個HTTP偵聽器對象 ...
  • 頁面設計需求,做了一個氣泡形狀的彈出框,效果如下: 設計思路如下: 1. 使用Path繪製氣泡的尖尖,將這個放到頂層; 2. 在用border繪製長方形框,將這個放到底層,並且設置Margin值,使得Path圖層和border看起來銜接在一起。 代碼如下: 後臺代碼,很簡單,就是控制pupup顯示或 ...
  • 開始使用 LINQ 在此之前曾發表過三篇關於 LINQ 的隨筆: 進階:《LINQ 標準查詢操作概述》(強烈推薦) 技巧:《Linq To Objects - 如何操作字元串》 和 《Linq To Objects - 如何操作文件目錄》 現在,自己打算再整理一篇關於 LINQ 入門的隨筆。 序 語 ...
  • 第一次在博客園發表文章,不多說,先上系統截圖。此系統是自己全程參與項目過程,從前期的技術方案整理到整個項目驗收,具體功能代碼實現,後續發表。 1、登錄: 2、客戶端主頁面 3、系統-切換機組伺服器 4、系統-配置伺服器 5、系統-數據下載 6、系統-更換皮膚 7、基礎數據-承包商檢驗人員 8、基礎數 ...
  • 字元串必須是數字,不要超過轉換成目標數字類型的範圍。超過的話系統也會報錯(溢出)。 static void Main(string[] args) { string s; int i; Console.WriteLine("please enter a number"); s = Console.R ...
  • 系統代碼是平臺內置的、通用的、統一的數據描述。代碼管理(數據字典)是整個平臺中數據描述的有效機制。通過界面進行可視化的操作和維護,能快速錄入和修改平臺上統一的字典數據。有效提高了數據的重覆利用率和產品、項目的開發效率。整個數據字典數據為框架平臺所共用,用戶可以更好地對系統進行自定義管理,以滿足自己的... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...