`
lindexi-gd
  • 浏览: 139769 次
社区版块
存档分类
最新评论

RichEditBox 使用自定义菜单

 
阅读更多

老周:当RichEditBox控件的上下文菜单即将弹出时,会引发ContextMenuOpening事件,我们需要处理该事件,并且将e.Handled属性设置为true,这样才能阻止默认上下文菜单的弹出

在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

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    RichTextBox控件 支持插入自定义超链接

    这涉及到对RTF(Rich Text Format)编码的理解,因为`RichTextBox`控件内部使用RTF来存储和显示富文本。RTF是一种文本格式,可以包含字体、颜色、图像等丰富的排版信息,同时也支持嵌入超链接。 扩展`RichTextBox`...

    VB下RichEditBox控件示例(包括载入文件、剪贴板操作)

    这个示例项目将向我们展示如何在VB中有效地使用`RichEditBox`进行各种操作,例如加载文件、打印、剪切、复制、粘贴以及格式化文本。 首先,`Form1.frm`和`Form1.frx`是VB窗体文件及其资源文件,它们定义了窗体的...

    Richeditbox中调用OLE

    然而,有时我们需要在`RichEditBox`中插入更丰富的元素,如图表、媒体播放器或者自定义控件,这时就涉及到了`OLE`(Object Linking and Embedding)技术。`OLE`允许我们在文档中嵌入和链接来自不同应用程序的对象,...

    DevexpressWinform中文文档

    5. **菜单和工具栏**:DevExpress的MenuBar和ToolBar控件允许自定义菜单项和工具按钮,提供丰富的交互体验。 6. **其他控件**:还包括诸如RichEditBox(富文本编辑器)、Scheduler(日历和计划任务控件)、TreeList...

    C#中RichTextBox控件+扩展工具栏(toolbar)实现的简单文本编辑器

    在C#编程环境中,开发一个简单的文本编辑器通常涉及到对Windows Forms或WPF框架的使用。在这个场景中,我们关注的是使用RichTextBox控件结合扩展工具栏(toolbar)来实现这样的功能。RichTextBox控件是.NET ...

    C# html编辑器集合

    - **自定义扩展编辑器**:这类编辑器允许开发者根据需求添加自定义插件和功能,例如使用开源编辑器项目如DevExpress的RichEditBox,开发者可以根据C# API扩展其功能。 3. **集成C# HTML编辑器**: - 在ASP.NET...

    DevExpree Winforms_主要控件帮助译文

    以及一些更高级的组件,如ChartControl(用于数据可视化)、DockPanel(用于窗口布局管理)、TreeView(用于展示层级结构)和RichEditBox(富文本编辑器)等。每个控件的介绍通常包括以下内容: 1. **控件概述**:...

    SavePPT2Txt2 及源码

    对于PowerPoint文件,可能需要自定义的解析器或使用Microsoft Office的COM接口(如`Automation`或`Office Interop`)来访问其内容。 6. **安全性与道德问题**: - 能够绕过RMS的限制虽然展示了编程能力,但需要...

    local-note:使用UWP Framework构建的富文本编辑器

    4. **事件处理**:为了响应用户交互,如点击按钮或选择菜单项,我们需要监听`RichEditBox`的事件,如`TextChanged`、`SelectionChanged`等。在事件处理函数中执行相应的操作,如添加样式、插入图片或保存内容。 5. ...

    如何最简单在C#中的richTextBox控件中放入图片

    如何最简单在C#中,richTextBox,控件,中放入图片 如何最简单在C#中,richTextBox,控件,中放入图片 如何最简单在C#中,richTextBox,控件,中放入图片 如何最简单在C#中,richTextBox,控件,中放入图片 ...

    cegui相关修改资料

    4. **富文本框** (richeditbox.rar): 富文本框是能够显示格式化文本的GUI组件,如不同颜色、字体和样式。此压缩文件可能包含了CEGUI中富文本支持的增强或定制,例如添加新的格式选项或改进文本渲染效率。 5. **...

    SaveWord2Txt

    标题“SaveWord2Txt”揭示了我们讨论的主题,即一个使用VC6(Visual C++ 6.0)编写的程序,该程序能够读取并保存当前打开的Microsoft Word文档的内容到一个纯文本(TXT)文件中。这个功能特别有用,因为即使Word文档...

    WPF富文本编辑器,开源代码demo仿word

    这个编辑器提供了一系列强大的文本处理能力,适用于开发人员构建自定义的文本编辑应用。 **WPF(Windows Presentation Foundation)** WPF是.NET框架的一部分,由微软开发,用于构建Windows桌面应用程序。它提供了...

Global site tag (gtag.js) - Google Analytics