WPF实现RichTextBox插入图片及调整行距

合集下载

winform richtextbox使用

winform richtextbox使用

winform richtextbox使用下面是一个关于使用WinForm RichTextBox 控件的1500-2000 字的文章。

WinForm RichTextBox 使用指南引言WinForm 是一个功能强大的桌面应用程序开发框架,它提供了许多可视化控件来帮助开发人员快速构建应用程序。

其中之一就是RichTextBox 控件,它允许我们在应用程序中创建和编辑格式化文本。

本文将详细介绍如何使用WinForm RichTextBox 控件,并提供一些实用的示例来帮助您更好地理解。

什么是WinForm RichTextBox 控件?WinForm RichTextBox 控件是一个可用于显示和编辑文本的控件。

与标准文本框控件相比,它具有更多的功能,例如可以支持不同的字体、字号和颜色,还可以插入图片和超链接等。

它是一个非常灵活和强大的工具,可以满足各种文本编辑需求。

1. 创建一个WinForm 应用程序首先,我们需要创建一个新的WinForm 应用程序来使用RichTextBox 控件。

打开Visual Studio,并选择新建项目。

在弹出的对话框中选择“Windows 应用程序”模板,然后点击“下一步”。

在下一个对话框中,输入应用程序的名称并选择一个保存位置。

最后,点击“创建”按钮,即可创建一个新的WinForm 应用程序。

2. 在窗体上添加RichTextBox 控件一旦应用程序创建完成,我们可以在窗体上添加RichTextBox 控件。

在Visual Studio 的设计器中打开窗体,然后从工具箱中拖动一个RichTextBox 控件到窗体上的合适位置。

3. 设置RichTextBox 控件的属性-在设计时,我们可以通过设置控件的各种属性来自定义RichTextBox 控件的外观和行为。

例如,我们可以设置控件的Name 属性,以便在代码中引用它。

我们还可以设置控件的大小和位置,以确保它适合窗体布局。

devexpress richedit 字间距

devexpress richedit 字间距

devexpress richedit 字间距DevExpress RichEdit 字间距在编辑文档时,字间距是一种常见的排版技术,可以用来调整文字之间的水平间距。

DevExpress RichEdit是一款功能强大的文本编辑控件,能够满足各种排版需求,包括字间距的调整。

本文将详细介绍DevExpress RichEdit中字间距的使用方法和技巧。

一、什么是字间距?字间距指的是相邻文字之间的水平间距,用来调整字符之间的距离,以实现更好的排版效果。

可以通过增加或减小字间距来调整文字的紧凑程度,从而使得文本更加易读、美观。

二、DevExpress RichEdit如何设置字间距?在DevExpress RichEdit中,可以通过以下几个步骤来设置字间距:步骤一:打开RichEdit控件并选中要调整字间距的文本。

步骤二:在RichEdit的工具栏中,找到"字间距"按钮,点击它。

步骤三:弹出的字间距设置窗口中,可以通过拖动滑块或手动输入数值来改变字间距大小。

同时,还可以选择不同的单位,如磅、点或百分比等。

步骤四:调整完毕后,点击"确定"按钮,即可完成字间距的设置。

三、字间距的调整技巧除了基本的字间距设置外,DevExpress RichEdit还提供了一些高级的调整技巧,以满足更加复杂的排版需求。

下面介绍几个常用的技巧:1. 段落样式设置:可以通过设置段落样式来实现不同字间距之间的变化。

在RichEdit中,可以创建自定义的段落样式,并在其中设置不同的字间距值。

通过在不同段落间切换样式,即可实现不同字间距的效果。

2. 字符样式设置:与段落样式类似,还可以通过设置字符样式来实现不同字间距的改变。

可以在需要设置字间距的文字上选中,然后在RichEdit的字符样式设置中改变字间距的数值。

3. 动态调整:在某些情况下,可能需要动态调整字间距。

例如,在表格、图形或其他元素中插入文本时,可以根据需要自动调整字间距,以使得文本和其他元素更好地配合。

WPF中RichTextBox使用方法及属性

WPF中RichTextBox使用方法及属性
string dataFormat = DataFormats.Text;
string ext = System.IO.Path.GetExtension(filename);
if (pare(ext, ".xaml",true) == 0) {
private static void LoadRTF(string rtf, RichTextBox richTextBox)
{
if (string.IsNullOrEmpty(rtf)) {
throw new ArgumentNullException();
{
TextRange textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
return textRange.Text;
}
6. 将RTF (rich text format)放到RichTextBox中:
rtfMemoryStream.Seek(0, SeekOrigin.Begin);
//Load the MemoryStream into TextRange ranging from start to end of RichTextBox.
dataFormat = DataFormats.Xaml;
}
else if (pare(ext, ".rtf", true) == 0) {
dataFormat = DataFormats.Rtf;
<Setter Property="Margin" Value="0"/>

RichTextBox

RichTextBox
}
return this._RichEditOle;
}
}
public void InsertControl(Control control)
{
if(control==null)return;
IntPtr pLockBytes=API.CreateILockBytesOnHGlobal(IntPtr.Zero,true);
IntPtr pStorage=API.StgCreateDocfileOnILockBytes(pLockBytes,STGM.STGM_SHARE_EXCLUSIVE|STGM.STGM_CREATE|STGM.STGM_READWRITE,0);
IntPtr pOleClientSite=this.IRichEditOle.GetClientSite();
this.Paste(dataFormat);
}
catch (Exception exc)
{
MessageBox.Show("图片插入失败。" + exc.Message, "提示",
control.Select();
control.Focus();
}
public void InsertOle(IOleObject oleObject)
{
if(oleObject==null)return;
Guid guid=oleObject.GetUserClassID();
RichTextBox1.Paste(myFormat)
Else
MessageBox.Show("内存不足!", "错误")

WPF自定义控件与样式(3)-TextBoxRichTextBoxPasswordBox样。。。

WPF自定义控件与样式(3)-TextBoxRichTextBoxPasswordBox样。。。

WPF⾃定义控件与样式(3)-TextBoxRichTextBoxPasswordBox样。

⼀.前⾔.预览 申明:WPF⾃定义控件与样式是⼀个系列⽂章,前后是有些关联的,但⼤多是按照由简到繁的顺序逐步发布的等,若有不明⽩的地⽅可以参考本系列前⾯的⽂章,⽂末附有部分⽂章链接。

本⽂主要是对⽂本输⼊控件进⾏样式开发,及相关扩展功能开发,主要内容包括:基本⽂本框TextBox控件样式及扩展功能,实现了样式、⽔印、Label标签、功能扩展;富⽂本框RichTextBox控件样式;密码输⼊框PasswordBox控件样式及扩展功能;效果图:⼆.基本⽂本框TextBox控件样式及扩展功能2.1 TextBox基本样式样式代码如下:<!--TextBox默认样式--><Style TargetType="{x:Type TextBox}" x:Key="DefaultTextBox"><Setter Property="ContextMenu" Value="{DynamicResource TextBoxContextMenu}"/><Setter Property="SelectionBrush" Value="{StaticResource TextSelectionBrush}"/><Setter Property="FontFamily" Value="{StaticResource FontFamily}"/><Setter Property="FontSize" Value="{StaticResource FontSize}"/><Setter Property="BorderThickness" Value="1"/><Setter Property="MinHeight" Value="26"/><Setter Property="Width" Value="100"/><Setter Property="Background" Value="{StaticResource TextBackground}"/><Setter Property="Foreground" Value="{StaticResource TextForeground}"/><Setter Property="Padding" Value="0"/><Setter Property="BorderBrush" Value="{StaticResource ControlBorderBrush}"/><Setter Property="local:ControlAttachProperty.FocusBorderBrush" Value="{StaticResource FocusBorderBrush}"/><Setter Property="local:ControlAttachProperty.MouseOverBorderBrush" Value="{StaticResource MouseOverBorderBrush}"/><Setter Property="VerticalContentAlignment" Value="Center"/><!-- change SnapsToDevicePixels to True to view a better border and validation error --><Setter Property="SnapsToDevicePixels" Value="True"/><!--英 ['kærət] 美 ['kærət] 插⼊符号--><Setter Property="CaretBrush" Value="{StaticResource TextForeground}"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type TextBox}"><Grid x:Name="PART_Root"><Border x:Name="Bg" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"CornerRadius="{TemplateBinding local:ControlAttachProperty.CornerRadius}"BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"/> <Grid x:Name="PART_InnerGrid"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><!--Label区域--><ContentControl x:Name="Label" Margin="1" Template="{TemplateBinding local:belTemplate}"Content="{TemplateBinding local:bel}"/><!--内容区域--><ScrollViewer x:Name="PART_ContentHost" BorderThickness="0" Grid.Column="1" IsTabStop="False" Margin="2"VerticalAlignment="Stretch" Background="{x:Null}"/><!--⽔印--><TextBlock x:Name="Message" Padding="{TemplateBinding Padding}" Visibility="Collapsed"Text="{TemplateBinding local:ControlAttachProperty.Watermark}" Grid.Column="1"Foreground="{TemplateBinding Foreground}" IsHitTestVisible="False" Opacity="{StaticResource WatermarkOpacity}"HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="5,2,5,2"/><!--附加内容区域--><Border x:Name="PART_AttachContent" Grid.Column="2" Margin="2" VerticalAlignment="Center" HorizontalAlignment="Center"><ContentControl VerticalAlignment="Center" VerticalContentAlignment="Center" Template="{TemplateBinding local:ControlAttachProperty.AttachContent}"/></Border></Grid></Grid><ControlTemplate.Triggers><!--显⽰⽔印--><DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value=""><Setter TargetName="Message" Property="Visibility" Value="Visible"/></DataTrigger><Trigger Property="IsMouseOver" Value="True"><Setter Property="BorderBrush" Value="{Binding Path=(local:ControlAttachProperty.MouseOverBorderBrush),RelativeSource={RelativeSource Self}}"/></Trigger><Trigger Property="IsFocused" Value="True"><Setter Property="BorderBrush" Value="{Binding Path=(local:ControlAttachProperty.FocusBorderBrush),RelativeSource={RelativeSource Self}}"/></Trigger><!--不可⽤--><Trigger Property="IsEnabled" Value="False"><Setter TargetName="PART_Root" Property="Opacity" Value="{StaticResource DisableOpacity}"/></Trigger><!--只读时,禁⽤PART_AttachContent--><Trigger Property="IsReadOnly" Value="True"><Setter TargetName="PART_AttachContent" Property="IsEnabled" Value="False"/><Setter TargetName="Bg" Property="Opacity" Value="{StaticResource ReadonlyOpacity}"/><Setter TargetName="PART_ContentHost" Property="Opacity" Value="{StaticResource ReadonlyOpacity}"/><Setter TargetName="Label" Property="Opacity" Value="{StaticResource ReadonlyOpacity}"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style> 模板内容主要包含四部分:⽤于实现Label标签的预留区域;TextBox本⾝的⽂本输⼊显⽰部分;⽔印显⽰部分;功能扩展的预留区域; 其中Label标签、功能扩展,还有输⼊框的不同状态显⽰效果都是通过附加属性来实现的,其实从本质上附加属性和控件上定义的依赖属性是同⼀个概念,有些时候附加属性会更加⽅便,对于⼀些可共⽤的属性,就⽐较⽅便,这⼀点怎本⽂是有体现的。

RichTextBox控件的常用属性

RichTextBox控件的常用属性

OLEDropMode
获得或设置该对象是否能作为一个 OLE 放置目标。取值为: 0 rtfOLEDropNone(无) 1 rtfOLEDropManual(手动)
RightMargin
设置文本换行、居中对齐等情况下的右边距。
ScrollBars
返回或设置一个值,指出 RichTextBox 控件是否有水平或 垂直滚动条。取值为: 0 rtfNone 1 rtfHorizontal 2 rtfVertical 3 rtfBoth
DataFormat
返回数据格式对象,用于该部件的可绑定性(打开属性页)
DataMember
获得或设置一个值,为数据连接描述数据成员
DataSource
设置一个数值,指出数据控件通过它将当前控件绑定到数 据库
DisableNoScroll
返回或设置一个值,决定 RichTextBox 控件的滚动条是否 无效。取值为: True False
TabIndex
获得或设置此对象在父窗体的编号(父窗体中对象响应 Tab 键的顺序)
TabStop
设置是否可以用"Tab"键选取此对象。取值为: True 可以 False 不可以
Tag
存储程序所需的附加数据
Text
获得或设置一个对象所包含的文本。
ToolTipText
设置该对象的提示行
Top
距容器顶部边界的距离
MousePointer=99 时,设定一个自定义的鼠标图标
MousePointer
MultiLine OLEDragMode
返回或设置一个值,指出 RichTextBox 控件是否能接受和 显示多行文本。取值为: True False

使用高级控件--RichTextBox控件

使用高级控件--RichTextBox控件

RichTextBox控件多格式文本框(RichTextBox)控件允许用户输入和编辑文本的同时提供了比普通的TextBox控件更高级的格式特征。

RichTextBox控件提供了几个有用的特征,从而可以在控件中安排文本的格式。

要改变文本的格式,必须先选中该文本。

只有选中的文本才可以编排字符和段落的格式。

有了这些属性,就可以设置文本使用粗体,改变字体的颜色,创建超底稿和子底稿。

也可以设置左右缩排或不缩排,从而调整段落的格式。

RichTextBox控件可以打开和保存RTF文件和普通的ASCII文本文件。

可以使用控件的方法(LoadFile和SaveFile)直接读取和保存文件。

RichTextBox控件支持几乎所有的TextBox控件中的属性、方法和事件,如MaxLength 属性、MultiLine属性、SelectAll()方法等。

因此,能够使用TextBox控件的应用程序很容易改为使用RichTextBox控件。

然而,RichTextBox控件并没有普通TextBox控件的64K字符能力的限制,同时也具有一些特有的属性、方法和事件。

RichTextBox控件常用的属性和方法如下:说明:为了方便介绍RichTextBox控件的常用属性和方法,假定有一个名为rtxtNotepad 的多格式文本框控件,用于记事本程序的文本编辑。

1. Text属性RichTextBox控件的Text属性用于返回或设置多格式文本框的文本内容。

设置时可以使用属性窗口,也可以使用代码,代码示例如下://************************************************************************* rtxtNotepad.Text = "Visual C# 2008"; // 设置rtxtNotepad的文本内容//************************************************************************* 2. MaxLength属性RichTextBox控件的MaxLength属性用于获取或设置在多格式文本框控件中能够键入或者粘贴的最大字符数。

RichTextBox控件插入图...

RichTextBox控件插入图...

RichTextBox控件插入图...前天经过了连续6个小时的试验,终于突破了二十多天的困扰,取得了成功!哇,爽,好爽,爽极了!我接连打了10个响指,又吹了一分钟的口哨,以发泄我无比喜悦的心情。

代码看起来非常简单,却浸透我的脑汁,每个字符至少要消耗 100个脑细胞!好,下面就让弟兄们一道来分享我的快乐吧。

我们知道,RichTextBox 控件插入图片时,最令人头大的事情就是:当控件中有汉字时,插入的图片不能将它粘贴在指定的位置——它会出现在你意想不到的地方!SelStart属性丝毫不起作用,这无疑是RichTextBox控件的一个BUG。

以下的代码就是为了解决这个问题。

第一种方法:本方法直接将图片定位到所需要的位置。

优点:一步到位,操作便捷,缺点:要多用一个RichTextBox 控件。

新建一个工程,在窗体上添加两个RichT extBox 控件,RichTextBox1作为主窗口,RichTextBox2作为专用控件,可以画小一点。

RichT extBox2 的属性设置:ScrollBars=3TabStop=FalseText=""Visible=False再在窗体上添加五个按纽,按纽的标题和名称均为:1.打开图片文件2.特殊剪切3.特殊复制4.剪切5.复制6.粘贴本方法的操作与常用的编辑操作基本相同,唯一不同之处是,当你要剪切或复制图文混合的内容粘贴到本窗口别的地方时,必须使用“特殊剪切”或“特殊复制”。

代码如下:Private Sub 打开图片文件_Click()'可打开的图片类型为:bmp,jpg,gif,WMFClipboard.ClearClipboard.SetData LoadPicture("(全路径文件名)")If Clipboard.GetData Then 粘贴_ClickEnd SubSub 复制_Click()SendMessage RichTextBox1.hwnd, 769, 0, 0End SubSub 剪切_Click()SendMessage RichTextBox1.hwnd, 768, 0, 0End SubSub 粘贴_Click()If Clipboard.GetFormat(vbCFT ext) Then RichTextBox1.SelRTF = Clipboard.GetT ext: Exit SubIf Clipboard.GetFormat(vbCFBitmap) ThenSendMessage RichTextBox2.hwnd, 1088, 2, 1ElseSendMessage RichTextBox2.hwnd, 770, 0, 0End IfRichTextBox2.SelStart = 0: RichTextBox2.SelLength = 1Clipboard.SetText RichTextBox2.SelRTFRichTextBox2 = "": RichTextBox1.SetFocusRichTextBox1.SelRTF = Clipboard.GetTextEnd SubPrivate Sub 特殊复制_Click()Clipboard.SetText RichTextBox1.SelRTFEnd SubPrivate Sub 特殊剪切_Click()Clipboard.SetText RichTextBox1.SelRTFRichTextBox1.SelText = ""End Sub第二种方法:本方法先将图片粘贴到窗口,再通过操作将图片定位。

RichTextBox控件的常用方法

RichTextBox控件的常用方法

RichTextBox控件的常用方法RichTextBox控件的常用方法方法名称说明Drag 用于控件的开始、结束或取消拖动操作,语法格式:[RichT extBox.]Dragaction其中:action可选的。

是一个常数或数值,如“设置值”中所描述的,它指定要执行的动作。

如果省略action,则缺省值为开始拖动对象。

设置值:常数值描述vbCancel取消拖动操作vbBeginDrag1开始拖动控件vbEndDrag2结束拖放控件Find 在RichTextBox控件中搜索指定的字符串,语法格式:[RichT extBox.]Find(string,start,end,options)其中:string在控件中搜索的字符串表达式start可选参数。

一个整数,指定开始搜索的字符索引位置。

RichTextBox控件中的每个字符都有一个整数索引位置,用于唯一标识该字符。

RichTextBox控件中的第一个字符的索引是0end可选参数。

一个整数,指定结束搜索的字符索引位置options可选参数。

一个或多个索引常量,指定选项特征,如“设置”中所示常数值描述rtfWholeWord确定匹配是整个单词还是单词的一部分rtfMatchCase4确定匹配是否使用大小写rtfNoHightlight8确定匹配的字符是否加亮显示GetLineFromChar 返回RichTextBox控件中包含指定字符位置的行号,语法格式:[RichTextBox.]GetLineFromChar(charpos)其中:charpos长整数,指定要标识的字符索引。

RichT extBox控件中第一个字符的索引是0 LoadFile 给RichTextBox控件加载一个.RTF文件或文本文件,语法格式:[RichT extBox.]LoadFilepathname,filetype?其中:pathname字符串表达式,指定要加载文件的路径名和文件名filetype 可选参数。

devexpress richedit 字间距 -回复

devexpress richedit 字间距 -回复

devexpress richedit 字间距-回复如何在DevExpress RichEdit中设置字间距DevExpress RichEdit是一款功能强大的富文本编辑器控件,它提供了许多高级编辑功能和格式设置选项,包括字间距。

字间距是指字符之间的空间大小,它可以影响文本在屏幕上的可读性和外观。

在此文章中,我们将一步一步地学习如何在DevExpress RichEdit中设置字间距。

第一步:引用DevExpress RichEdit控件首先,确保您已经成功地引用了DevExpress RichEdit控件。

您可以在DevExpress官方网站上下载和安装DevExpress控件套件,或者通过NuGet包管理器将DevExpress控件包添加到您的项目中。

第二步:添加RichEdit控件到窗体在您的Windows窗体应用程序中,添加RichEdit控件到窗体上。

您可以选择在设计时手动将RichEdit控件拖放到窗体上,或者使用代码动态创建RichEdit控件。

确保为RichEdit控件设置适当的大小和位置。

第三步:设置字间距属性在设计器或代码中选择RichEdit控件后,您可以通过修改其`Font`属性来设置字间距。

`Font`属性是一个对象,它具有`Size`和`Spacing`属性,分别控制字体大小和字间距。

csharprichEditControl1.Font.Size = 12; 设置字体大小为12 richEditControl1.Font.Spacing = 2; 设置字间距为2以上代码将在RichEdit控件中设置字体大小为12,并将字间距设置为2。

您可以根据需要自行调整这些值。

第四步:使用CharacterProperties对象设置字间距除了直接通过RichEdit控件的`Font`属性设置字间距外,您还可以使用CharacterProperties对象来设置字间距。

CharacterProperties对象是用于管理文本字符属性的实例,包括字体、大小、颜色和其他格式选项。

vbrichtextbox透明、行距设置、判断垂直滚动条出现

vbrichtextbox透明、行距设置、判断垂直滚动条出现

vbrichtextbox透明、行距设置、判断垂直滚动条出现这个要求是文本阅读时候产生,让richtextBox透明,显出背景图,比如一本书页的样子,或者其他。

那么就需要透明。

当然还要控制行距。

同时最好不要出现那个默认的灰色滚动条,破坏整个效果。

一、透明'声明部分Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongConst GWL_EXSTYLE = (-20)Const WS_EX_TRANSPARENT = &H20&'使用部分Dim rtn As Longrtn = GetWindowLong(RichTextBox1.hwnd, GWL_EXSTYLE)SetWindowLong RichT extBox1.hwnd, GWL_EXSTYLE, rtn Or WS_EX_TRANSPARENT说明:透明的RichT extBox文字内容是可以显现的。

同时,如果你对整个窗体使用了 SetWindowLong函数控制整体透明效果,或者色彩过滤,则对控件的再次使用会失效。

二、行距设置'API函数声明Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long'参数初始化Private Const WM_USER = &H400Private Const EM_SETPARAFORMAT = WM_USER + 71 Public Const MAX_TAB_STOPS As Long = 32Public Const PFM_LINESPACING As Long = 256'声明一个结构Public Type PARAFORMAT2cbSize As LongdwMask As LongwNumbering As IntegerwEffects As IntegerdxStartIndent As LongdxRightIndent As LongdxOffset As LongwAlignment As IntegercTabCount As IntegerrgxTabs(MAX_TAB_STOPS - 1) As Long dySpaceBefore As LongdySpaceAfter As LongdyLineSpacing As LongsStyle As IntegerbLineSpacingRule As BytebOutlineLevel As BytewShadingWeight As Integer wShadingStyle As Integer wNumberingStart As Integer wNumberingStyle As Integer wNumberingTab As Integer wBorderSpace As IntegerwBorderWidth As IntegerwBorders As IntegerEnd Type'使用部分Private pf2 As PARAFORMAT2 '实例化结构变量'构造一个设置函数Private Sub sethang(rt As RichTextBox, num As Long) 'num 值推荐范围200-1500Dim retval As LongIf rt.SelText = "" Thenrt.SelStart = 0rt.SelLength = Len(rt)End Ifpf2.cbSize = LenB(pf2)pf2.bLineSpacingRule = 4pf2.dyLineSpacing = numpf2.dwMask = PFM_LINESPACINGretval = SendMessage(rt.hwnd, EM_SETPARAFORMAT, ByVal 0&, pf2)End Sub三、判断垂直滚动条是否出现'API调用与二相同,增加一些参数值。

WPFRichTextBox的使用总结

WPFRichTextBox的使用总结

WPFRichTextBox的使⽤总结RichTextBox内容模型RichTextBox ⽀持基于块的内容模型。

RichTextBox 的内容属性为 Blocks,这是 Paragraph 元素的集合Paragraph元素可包含从 Inline 派⽣的元素。

上图总结了 RichTextBox 的内容模型,并且显⽰从 Block 和 Inline 派⽣的元素是如何适应此模型的。

简单介绍1.RichTextBox 是⼀个可⽀持您显⽰或编辑丰富内容(包括段落、超链接和内联图像)的控件。

本主题介绍 RichTextBox 控件,描述该控件的⼀些功能,并且显⽰如何在 XAML 和代码中使⽤该控件的⼀些⽰例。

2.RichTextBox 分为块和⾏Block 元素Block 元素是从 Block 继承的类。

⽬前,Paragraph 和 Section 从 Block 派⽣,但 Section 不是 RichTextBox 的⽂档模型的⼀部分。

Block 元素描述Paragraph Paragraph ⽤于将内容分组到⼀个段落中。

Paragraph 的最简单且最常见的⽤途是创建⽂本段落。

Paragraph 还可以包含 Inline 元素。

Inline 元素Inline 元素是从 Inline 继承的类。

⼀个 Inline 元素或者包含在⼀个 Block 元素中,或者包含在另⼀个 Inline 元素中。

Inline 元素通常⽤作在屏幕上呈现的内容的直接容器。

例如,⼀个 Paragraph(Block 元素)可以包含 Run(Inline 元素),但 Run 实际包含在屏幕上呈现的⽂本。

每个 Paragraph 元素中的内容都可以包含如下许多类型的元素:Inline 元素描述Run Run ⽤于包含⽆格式⽂本。

您可能预期 Run 对象会在内容中⼴泛使⽤,不过,在标记中不需要显式使⽤ Run 元素。

Span Span 将其他 Inline 内容元素组织到⼀起。

WPF之TextBox

WPF之TextBox

WPF之TextBox1. TextBox实现⽂字垂直居中TextBox纵向长度⽐较长但⽂字字体⽐较⼩的时候,在输⼊时就会发现⽂字不是垂直居中的。

⽽使⽤中我们发现,TextBox虽然可以设置⽂字的⽔平对齐⽅式,但却没有相应的属性让我们来调节他的垂直对齐⽅式。

好在TextBox继承⾃Control类,可以通过修改Template模板来改变他的属性样式(TextBlock继承⾃FrameworkElement,不可进⾏模板编辑)。

<Style x:Key="Test_TextBox" TargetType="{x:Type TextBox}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type TextBox}"><Border x:Name="border" Width="Auto" Height="Auto" BorderThickness="1" BorderBrush="#FF7F9DB9"><Grid x:Name="grid" Background="#FFFFFF"><ScrollViewer x:Name="PART_ContentHost" VerticalAlignment="Center" HorizontalAlignment="Left"/></Grid></Border></ControlTemplate></Setter.Value></Setter></Style>最后应⽤⼀下样式可以了。

RichTextBox控件简介

RichTextBox控件简介

RichTextBox控件简介RichTextBox 控件用于显示、输入和操作格式文本。

RichTextBox 控件除具有TextBox 控件的所有功能外,还能设定文字颜色、字体和段落格式,支持字符串查找功能,支持rtf 格式等功能。

1.RichTextBox控件的常用属性1)Dock属性——设定控件在窗体中的位置。

2)SelectedText属性、SelectionLength属性、SelectionStart属性——与TextBox控件的属性功能相同。

3)SelectionFont:获取或设置选中的文本或插入点的字体,例如:richTextBox1.SelectionFont=fontDialog1.Font; //设置为字体对话框中选中的字体4)SelectionColor:获取或设置选中的文本或插入点的文本颜色。

5)SelectionAlignment:获取或设置应用到当前选定内容或插入点的对齐方式。

取值为HorizontalAlignment枚举值。

见下表:♦Center :对象或文本与控件元素的中心对齐。

♦Left :对象或文本与控件元素的左侧对齐。

♦Right :对象或文本与控件元素的右侧对齐6)Lines属性——字符串数组。

记录输入到RichText控件中的所有文本,每按两次回车键之间的字符串是该数组的一个元素。

7)Modifyed属性——记录用户是否已修改控件中的文本内容。

若已修改,该属性值自动设置为true。

8)HideSelection属性——设置当焦点离开该控件时,选定的文本是否保持突出显示。

值为false时突出显示。

2.RichTextBox控件的常用事件1)SelectionChange事件——控件中选中的文本发生改变时,触发该事件。

2)TextChanged事件——控件中的文本内容发生改变时,触发该事件。

3.RichTextBox控件的常用方法1)Clear( )方法——清除RichText控件中用户输入的所有内容。

richtextbox的使用方法

richtextbox的使用方法

richtextbox的用法:With RichTextBox1.SelStart = 0.SelLength = 3 ’长度为3.SelColor = vbRed ’颜色.SelBold = True ’粗为真End WithWith RichTextBox1.SelStart = 3.SelLength = 3 ’长度3.SelFontSize = 12 ’字大小:12号.SelItalic = TrueEnd With==============================================================With RichTextBox1.SelStart = 0 ’从第0个字符开始选择(从0开始,然后1,2,……).SelLength = 3 ’一共选择3个字符.SelColor = vbRed ’将选择了的字符的颜色设为红色.SelBold = True ’将选择了的字符的粗体设为真End With==============================================================Private Sub Form_Load()RichTextBox1.Text = "中国人" & vbCrLf & "网络公司"RichTextBox1.Font = "宋体"RichTextBox1.SelStart = 0RichTextBox1.SelLength = 3RichTextBox1.SelFontName = "宋体"RichTextBox1.SelFontSize = 25RichTextBox1.SelColor = vbBlueRichTextBox1.SelStart = 5RichTextBox1.SelLength = 4RichTextBox1.SelFontName = "黑体"RichTextBox1.SelFontSize = 18RichTextBox1.SelColor = vbRedRichTextBox1.SelLength = 0End Sub==================================================Windows 窗体 RichTextBox 控件介绍Windows 窗体 RichTextBox 控件用于显示、输入和操作格式文本。

WPF实现带标题的TextBox

WPF实现带标题的TextBox

WPF实现带标题的TextBox这篇博客将分享在WPF中如何创建⼀个带Title的TextBox。

⾸先请看⼀下最终的效果,实现思路:使⽤TextBlock+TextBox来实现,TextBlock⽤来显⽰Title。

实现代码,TitleTextBox[TemplatePart(Name = TitleTextBlockKey, Type = typeof(TextBlock))]public class TitleTextBox : TextBox{private const string TitleTextBlockKey = "PART_TitleTextBlock";private TextBlock _tbkTitle;public static readonly DependencyProperty TitleProperty;public string Title{get { return (string)GetValue(TitleProperty); }set { SetValue(TitleProperty, value); }}static TitleTextBox(){DefaultStyleKeyProperty.OverrideMetadata(typeof(TitleTextBox), new FrameworkPropertyMetadata(typeof(TitleTextBox)));TitleProperty = DependencyProperty.Register("Title", typeof(string), typeof(TitleTextBox), new UIPropertyMetadata(new PropertyChangedCallback(TitlePropertyChangedCallback))); }private static void TitlePropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e){TitleTextBox ttb = d as TitleTextBox;if (ttb._tbkTitle != null){ttb._tbkTitle.Text = (string)e.NewValue;}}public override void OnApplyTemplate(){base.OnApplyTemplate();_tbkTitle = Template.FindName(TitleTextBlockKey, this) as TextBlock;_tbkTitle.Text = Title;}}定义TitleTextBox样式,<ResourceDictionary xmlns="/winfx/2006/xaml/presentation"xmlns:x="/winfx/2006/xaml"xmlns:local="clr-namespace:WPFTitleTextBox.Resources.Styles"xmlns:uc="clr-namespace:WPFTitleTextBox"><Style TargetType="{x:Type uc:TitleTextBox}"><Setter Property="SnapsToDevicePixels" Value="True"/><Setter Property="FontSize" Value="12"/><Setter Property="Height" Value="28"/><Setter Property="UndoLimit" Value="0"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type uc:TitleTextBox}"><Border x:Name="OuterBorder" BorderBrush="#8b99bc" BorderThickness="1" CornerRadius="1" Background="#f7f7f7"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><TextBlock x:Name="PART_TitleTextBlock" Text="{Binding Title}" Foreground="#a7abb0" VerticalAlignment="Center" Margin="5,0"/><Line Grid.Column="1" Stroke="#ccd1d7" StrokeDashArray="2,2" StrokeThickness="1.5" X1="0" Y1="0"X2="0" Y2="{TemplateBinding Height}" Margin="0,4"/><Border Grid.Column="2" Background="White"><ScrollViewer x:Name="PART_ContentHost" Margin="5,0" VerticalAlignment="Center" FontSize="14"/></Border></Grid></Border></ControlTemplate></Setter.Value></Setter></Style></ResourceDictionary>在XAML中需要引⽤TitleTextBox。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WPF实现RichTextBox插入图片及调整行距
WPF里面虽然很多形式上跟Winform一样,但是控件的使用上面还是会有很多诧异。

RichTe xtBox就是一个例子,是的,在WPF里面对这个控件可以做很多Winform很难做的效果出来。

比如在对RichTextBox插入图片,winform时代除了用复制粘贴这种借助剪贴板的差劲方法之外就是要重写和自定义RichTextBox控件了。

这就需要高超的编程能力了。

但在WPF里面,只需要加几个代码就能搞定了。

在XAML里面添加图片到RichTextBox可以如下所示:
<RichTextBox HorizontalAlignment="Left" Margin="90,12,0,0" Name="richT extBox1">
<RichTextBox.Document>
<FlowDocument Focusable="True"LineHeight="5">
<Paragraph x:Name="gara">
文字区域
<Image Source="D:\1342892_10.jpg" Focusable="True" Height="50" Stretc h="Uniform"/>
文字区域
<Run Text="文字区域文字区域"></Run> <Run Text="文字区域"></Run>
</Paragraph>
<Paragraph x:Name="gara1">
<Run Text="文字区域"></Run>
<Run Text="文字区域"></Run>
</Paragraph>
</FlowDocument>
</RichTextBox.Document>
</RichTextBox>
这样就往控件里面添加了图片了。

备注:FlowDocument里面的LineHeight属性是文字段落的间距。

默认间距很大,所以这里调整一下!
当然,这样未必能够完全满足要求,因为有时候我们需要在程序运行的时候点击按钮选取图片进行添加。

代码如下:
privatevoid AddJPG_Click(object sender, RoutedEventArgs e)
{
string filepath = "";
string filename = "";
OpenFileDialogopenfilejpg = new OpenFileDialog();
openfilejpg.Filter = "jpg图片(*.jpg)|*.jpg|gif图片(*.gif)|*.gif"; openfilejpg.FilterIndex = 0;
openfilejpg.RestoreDirectory = true;
openfilejpg.Multiselect = false;
if (openfilejpg.ShowDialog() == true)
{
filepath = openfilejpg.FileName;
Image img = new Image(); BitmapImagebImg = new BitmapImage(); img.IsEnabled = true;
bImg.BeginInit();
bImg.UriSource = new Uri(filepath, UriKind.Relative); bImg.EndInit();
img.Source = bImg;
//MessageBox.Show(bImg.Width.ToString() + "," + bImg.Height.ToString ());
/* 调整图片大小
if (bImg.Height> 100 || bImg.Width> 100)
{
img.Height = bImg.Height * 0.2;
img.Width = bImg.Width * 0.2;
}*/
img.Stretch = Stretch.Uniform; //图片缩放模式
new InlineUIContainer(img, richTextBox1.Selection.Start); //插入图片到选定位置
}
}
这样就插入了一张图片到RichTextBox里了,是不是很简单呢!。

相关文档
最新文档