wpf RichTextBox 选中 图片
来源:互联网 发布:恒生电子软件开发待遇 编辑:程序博客网 时间:2024/05/13 23:40
当图片被添加到RichTextBox中,即发生TextChanged事件,处理这个事件,把所有的BlockUIContainer取出来,并判断它的Child是不是Image控件,如果是,就为它们各加一个MouseLeftButtonDown事件处理,响应鼠标左键双击。
记得要设置: IsDocumentEnabled="True",不然双击没效果
【XAML】
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal" Margin="10">
<Image x:Name="img" Stretch="Uniform" Height="60" Source="lan.jpg"/>
<Button Margin="18,0,0,0" Content="复制图片" Click="onCopy" VerticalAlignment="Center"/>
<Button Margin="25,0,0,0" Grid.Row="0" Content="粘贴" Click="onClick" VerticalAlignment="Center" Width="85"/>
</StackPanel>
<RichTextBox x:Name="rtb" Grid.Row="1" IsDocumentEnabled="True" TextChanged="rtb_TextChanged_1">
</RichTextBox>
</Grid>
【C#】
private void onClick(object sender, RoutedEventArgs e)
{
//this.rtb.Paste();
}
private void onCopy(object sender, RoutedEventArgs e)
{
Clipboard.SetImage((BitmapSource)this.img.Source);
}
private void rtb_TextChanged_1(object sender, TextChangedEventArgs e)
{
var doc = this.rtb.Document;
var blocks = doc.Blocks.ToArray();
// 判断一下是不是BlockUIContainer
// 有可能里面不只一个BlockUIContainer
var imgBlocks = blocks.Where(b => b is BlockUIContainer).ToArray();
// 查看每一个BlockUIContainer的子元素,
// 判断是不是Image类
foreach (var item in imgBlocks)
{
BlockUIContainer uic = (BlockUIContainer)item;
if (uic.Child is Image)
{
Image imgCtl = uic.Child as Image;
imgCtl.MouseLeftButtonDown -= imgCtl_MouseLeftButtonDown;
imgCtl.MouseLeftButtonDown += imgCtl_MouseLeftButtonDown;
}
}
}
void imgCtl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// ClickCount为2表示双击
if (e.ClickCount == 2)
{
MessageBox.Show("双击了图片");
}
e.Handled = true;
}
运行的结果看看下图的截图。
【XAML】
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal" Margin="10">
<Image x:Name="img" Stretch="Uniform" Height="60" Source="lan.jpg"/>
<Button Margin="18,0,0,0" Content="复制图片" Click="onCopy" VerticalAlignment="Center"/>
<Button Margin="25,0,0,0" Grid.Row="0" Content="粘贴" Click="onClick" VerticalAlignment="Center" Width="85"/>
</StackPanel>
<RichTextBox x:Name="rtb" Grid.Row="1" IsDocumentEnabled="True" TextChanged="rtb_TextChanged_1">
</RichTextBox>
</Grid>
【C#】
private void onClick(object sender, RoutedEventArgs e)
{
//this.rtb.Paste();
}
private void onCopy(object sender, RoutedEventArgs e)
{
Clipboard.SetImage((BitmapSource)this.img.Source);
}
private void rtb_TextChanged_1(object sender, TextChangedEventArgs e)
{
var doc = this.rtb.Document;
var blocks = doc.Blocks.ToArray();
// 判断一下是不是BlockUIContainer
// 有可能里面不只一个BlockUIContainer
var imgBlocks = blocks.Where(b => b is BlockUIContainer).ToArray();
// 查看每一个BlockUIContainer的子元素,
// 判断是不是Image类
foreach (var item in imgBlocks)
{
BlockUIContainer uic = (BlockUIContainer)item;
if (uic.Child is Image)
{
Image imgCtl = uic.Child as Image;
imgCtl.MouseLeftButtonDown -= imgCtl_MouseLeftButtonDown;
imgCtl.MouseLeftButtonDown += imgCtl_MouseLeftButtonDown;
}
}
}
void imgCtl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// ClickCount为2表示双击
if (e.ClickCount == 2)
{
MessageBox.Show("双击了图片");
}
e.Handled = true;
}
运行的结果看看下图的截图。
0 0
- wpf RichTextBox 选中 图片
- wpf RichTextBox 选中 图片
- WPF richtextbox
- WPF RichTextBox 保存图片到字符串 并显示
- Wpf richTextBox 文本编辑
- wpf 形状 RichTextBox
- wpf richtextbox详解
- WPF初探--RichTextBox
- WPF操作RichTextBox
- WPF richtextbox的使用
- c# wpf 操作RichTextBox
- WPF RichTextBox 禁止换行
- wpf richtextbox详解
- WPF操作RichTextBox
- wpf 操作richtextbox
- wpf RichTextBox ruhe
- WPF控件之RichTextbox
- [WPF] RichTextBox get/clear content
- js删除数组元素
- lldb与gdb命令比较
- 笔记1
- avast 免费好用的杀毒软件
- java递归删除文件及文件夹
- wpf RichTextBox 选中 图片
- JVM基本结构
- POJ 3069.Saruman's Army(贪心)
- GSM之返回命令提取
- A. Ilya and Diplomas( Codeforces Round #311 (Div. 2) )
- POJ2533-Longest Ordered Subsequence
- 利用优先队列实现堆排序(自顶向下自底向上堆化完全二叉树的运用)
- js Array(数组)操作的最简短最容易理解方法
- web.xml引入 xml (tomcat 7.0.52) 以上版本报错!