RichEditBox 使用自定义菜单
2015-12-10 16:28
330 查看
老周:当RichEditBox控件的上下文菜单即将弹出时,会引发ContextMenuOpening事件,我们需要处理该事件,并且将e.Handled属性设置为true,这样才能阻止默认上下文菜单的弹出
在RichEditBox控件上声明附加的菜单项
处理OnContextMenuOpening
处理复制粘贴
处理OnFontSize
颜色在Windows.UI.Color
里面代码都是抄老周的
参考:http://www.cnblogs.com/tcjiaan/p/4937301.html
在RichEditBox控件上声明附加的菜单项
<RichEditBox Name="redit" Grid.Row="3" Margin="10,10,10,10" ContextMenuOpening="OnContextMenuOpening"> <FlyoutBase.AttachedFlyout> <MenuFlyout> <MenuFlyoutItem Text="复制" Click="OnCopy"/> <MenuFlyoutItem Text="剪切" Click="OnCut"/> <MenuFlyoutItem Text="粘贴" Click="OnPaste"/> <MenuFlyoutSeparator/> <MenuFlyoutSubItem Text="字号"> <MenuFlyoutItem Text="16" Tag="16" Click="OnFontSize" /> <MenuFlyoutItem Text="20" Tag="20" Click="OnFontSize"/> <MenuFlyoutItem Text="24" Tag="24" Click="OnFontSize" /> <MenuFlyoutItem Text="36" Tag="36" Click="OnFontSize"/> <MenuFlyoutItem Text="48" Tag="48" Click="OnFontSize"/> </MenuFlyoutSubItem> <!--分割--> <MenuFlyoutSeparator/> <ToggleMenuFlyoutItem Text="加粗" Click="OnBold" /> <MenuFlyoutSeparator/> <MenuFlyoutSubItem Text="下划线"> <MenuFlyoutItem Text="无" Tag="-1" Click="OnUnderline" /> <MenuFlyoutItem Text="单实线" Tag="0" Click="OnUnderline"/> <MenuFlyoutItem Text="双实线" Tag="1" Click="OnUnderline"/> <MenuFlyoutItem Text="虚线" Tag="2" Click="OnUnderline"/> </MenuFlyoutSubItem> <MenuFlyoutSeparator/> <MenuFlyoutSubItem Text="颜色"> <MenuFlyoutItem Text="黑色" Tag="黑色" Click="OnTinct"/> <MenuFlyoutItem Text="蓝色" Tag="蓝色" Click="OnTinct"/> <MenuFlyoutItem Text="白色" Tag="白色" Click="OnTinct"/> </MenuFlyoutSubItem> </MenuFlyout> </FlyoutBase.AttachedFlyout> </RichEditBox>
处理OnContextMenuOpening
private void OnContextMenuOpening(object sender , ContextMenuEventArgs e) { //阻止弹出默认的上下文菜单,然后,调用ShowAt方法在指定的坐标处打开菜单 e.Handled = true; MenuFlyout menu = FlyoutBase.GetAttachedFlyout(redit) as MenuFlyout; menu?.ShowAt(redit , new Point(e.CursorLeft , e.CursorTop)); }
处理复制粘贴
private void OnCopy(object sender , RoutedEventArgs e) { //复制 redit.Document.Selection.Copy(); } private void OnCut(object sender , RoutedEventArgs e) { //剪切 redit.Document.Selection.Cut(); } private void OnPaste(object sender , RoutedEventArgs e) { //粘贴 redit.Document.Selection.Paste(0); //Paste 要在粘贴操作中使用的剪贴板格式。零表示最佳格式 }
处理OnFontSize
/// <summary> /// 设置字体 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnFontSize(object sender , RoutedEventArgs e) { MenuFlyoutItem item = sender as MenuFlyoutItem; // 获取字号 float size = Convert.ToSingle(item.Tag); redit.Document.Selection.CharacterFormat.Size = size; }
/// <summary> /// 加粗 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnBold(object sender , RoutedEventArgs e) { //using Windows.UI.Text; ToggleMenuFlyoutItem item = sender as ToggleMenuFlyoutItem; redit.Document.Selection.CharacterFormat.Bold = item.IsChecked ? FormatEffect.On : FormatEffect.Off; } private void OnUnderline(object sender , RoutedEventArgs e) { MenuFlyoutItem item = sender as MenuFlyoutItem; int x = Convert.ToInt32(item.Tag); UnderlineType unlinetp; switch (x) { case -1: // 无 unlinetp = UnderlineType.None; break; case 0: // 单实线 unlinetp = UnderlineType.Single; break; case 1: // 双实线 unlinetp = UnderlineType.Double; break; case 2: // 虚线 unlinetp = UnderlineType.Dash; break; default: unlinetp = UnderlineType.None; break; } redit.Document.Selection.CharacterFormat.Underline = unlinetp; }
private void OnTinct(object sender , RoutedEventArgs e) { MenuFlyoutItem item = sender as MenuFlyoutItem; string tinct = item.Tag as string; Windows.UI.Color color = new Windows.UI.Color(); switch (tinct) { case "黑色": color= Windows.UI.Colors.Black; break; case "蓝色": color = Windows.UI.Colors.Blue; break; case "白色": color = Windows.UI.Colors.White; break; default: break; } redit.Document.Selection.CharacterFormat.BackgroundColor = color; }
颜色在Windows.UI.Color
里面代码都是抄老周的
参考:http://www.cnblogs.com/tcjiaan/p/4937301.html
相关文章推荐
- 简单了解STL
- RichEditBox 使用自定义菜单
- EasyUI常用控件禁用方法
- TCP的拥塞控制
- SaltStack 最新版WebUI部署
- Jquery之table中根据行选中,进行背景变色和radio选中
- The first English passage
- Java排序之排序大综合
- PHP读取PPT文件的方法
- Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
- 私人网站收藏——精简
- 发布网站中的那些事儿
- suid,sgid,sticky_bit 特殊权限-note
- Leetcode192: Serialize and Deserialize Binary Tree
- Hibernate操作数据库的方式总结
- Android之单选框、复选框警告框
- Java学习----数组
- Diet
- node开发环境搭建(windows)
- SQL Case when 的使用