国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

WPF自學筆記(一):簡易記事本(Rich TextBox)

2019-11-08 02:24:16
字體:
來源:轉載
供稿:網友

??本文利用WPF的Rich TextBox控件制作簡易的記事本,實現文本文檔的打開與閱讀。曾嘗試利用SetParent()方法把windows自帶的記事本嵌入到WPF中,但是按鈕較小,不適合項目需要。因此才想著利用Rich TextBox控件自己做。

界面框架

??在XAML中放入一個Rich TextBox(用來顯示文檔)和5個Button(作用分別是打開文件、上一行、下一行、上一頁和下一頁)

<Grid> <Grid.RowDefinitions> <RowDefinition Height="108"/> <RowDefinition Height="108"/> <RowDefinition Height="108"/> <RowDefinition Height="107"/> <RowDefinition Height="107"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="126"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="957"/> </Grid.ColumnDefinitions> <Button x:Name="Openbt" Style="{StaticResource btStyle}" Grid.Row="0" Grid.Column="0" Width="124" Content="打開文件&#xD;&#xA;OpenFile" Click="Openbt_Click"/> <Button x:Name="Lastlbt" Style="{StaticResource btStyle}" Grid.Row="1" Grid.Column="0" Width="124" Content=" 上一行&#xD;&#xA;LastLine" Click="Lastl_Click"/> <Button x:Name="Nextlbt" Style="{StaticResource btStyle}" Grid.Row="2" Grid.Column="0" Width="124" Content=" 下一行&#xD;&#xA;NextLine" Click="Nextl_Click"/> <Button x:Name="Lastpbt" Style="{StaticResource btStyle}" Grid.Row="3" Grid.Column="0" Width="124" Content=" 上一頁&#xD;&#xA;LastPage" Click="Lastp_Click" /> <Button x:Name="Nextpbt" Style="{StaticResource btStyle}" Grid.Row="4" Grid.Column="0" Width="124" Content=" 下一頁&#xD;&#xA;NextPage" Click="Nextp_Click"/> <RichTextBox x:Name="richtb" Grid.Row="0" Grid.RowSpan="5" Grid.Column="2" FontSize="18"/> </Grid>

按鈕樣式

??注意,上面使用了Grid.RowDefinitions把Grid分成了5行3列方便布局。Button使用了Style=”{StaticResource btStyle}”統一外觀。其Style代碼如下所示:

<Window.Resources> <Style x:Key="btStyle" TargetType="{x:Type Button}"> <Setter ??最后得到的界面外觀圖如下所示:

這里寫圖片描述

??左側為五個功能按鈕,右側為Rich TextBox顯示區域。

瀏覽文件按鈕

??瀏覽文件功能需要使用windows API Code Pack,VS2015中好像集成的有,添加引用就好了。我使用的VS2013,所以需要安裝。VS打開工程,找到“工具”>>“庫程序包管理器”>>”程序包管理器控制臺”,輸入:

這里寫圖片描述

這里寫圖片描述

??安裝完成之后,會自動添加引用到工程:

這里寫圖片描述

??添加命名空間

using Microsoft.WindowsAPICodePack.Dialogs;

??下面寫“打開文件”按鈕的Click

private void Openbt_Click(object sender, RoutedEventArgs e) { CommonOpenFileDialog cofd2 = new CommonOpenFileDialog(); cofd2.Filters.Add(new CommonFileDialogFilter("文檔文件", "*.txt")); string str = null; if (cofd2.ShowDialog() == CommonFileDialogResult.Ok) { FilePath = cofd2.FileName; FileStream myfile = new FileStream(FilePath, FileMode.Open, File
access.Read); StreamReader reader = new StreamReader(myfile, System.Text.Encoding.Default); str = rder.ReadToEnd(); } richtb.Document.Blocks.Clear(); richtb.Document.Blocks.Add(new Paragraph(new Run(str))); //顯示內容 }

??上面最后兩句代碼的richtb為界面中Rich TextBox的名字。這里需要注意,可能很多博客里面會使用Rich TextBox.LoadFile()直接加載文檔,但是這個只是System.Windows.Forms中的Rich TextBox。在WPF中的Rich TextBox是沒有這個方法的。而我們知道,System.Windows.Forms中的控件,在界面中會默認置頂的,所以會遮擋其它WPF控件,可能會產生其他后續問題。經過實際測試:

richtb.Document.Blocks.Add(new Paragraph(new Run(str)));

??這句代碼打開文檔的效率很高, 不會出現界面卡頓延遲的情況,點擊“打開文件”運行效果圖如下。

這里寫圖片描述

??打開文檔之后:

這里寫圖片描述

??Rich TextBox有豐富的文本格式,所以上面顯示的字體,背景等屬性都是可以自己定義的,不再贅述。

其它按鈕

??其它四個按鈕(上一行,下一行,上一頁,下一頁)的Click直接在里面使用Rich TextBox自帶的方法就可以了。

private void Lastl_Click(object sender, RoutedEventArgs e) { richtb.LineUp(); } private void Nextl_Click(object sender, RoutedEventArgs e) { richtb.LineDown(); } private void Lastp_Click(object sender, RoutedEventArgs e) { richtb.PageUp(); } private void Nextp_Click(object sender, RoutedEventArgs e) { richtb.PageDown(); }

總結

代碼自己敲出來的才是自己的。繼續努力!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 墨脱县| 南木林县| 密山市| 山西省| 剑阁县| 中阳县| 濉溪县| 舟曲县| 墨脱县| 远安县| 新宁县| 芦溪县| 汨罗市| 定日县| 水富县| 福安市| 黄龙县| 阿克陶县| 洛扎县| 乌兰浩特市| 贵州省| 德清县| 南宁市| 阿巴嘎旗| 华宁县| 尼勒克县| 河曲县| 丽水市| 定襄县| 屏山县| 大渡口区| 玉溪市| 古交市| 海阳市| 宁安市| 成武县| 峡江县| 梅河口市| 东乡县| 凤城市| 宁河县|