winForm中RichTextBox富文本框的使用

创建一个RichTextBox控件

  • 属性
    a. 行为-EnableAutoDragDrop:True 允许拖拽
  1. 打开文件
    先添加一个button按钮,注册单击事件表示打开某个文件
 private void open_Click(object sender, EventArgs e)
        {
            //创建一个打开文件对话框
            OpenFileDialog openFile1 = new OpenFileDialog();
            //限定打开文件的初始化文件目录
            openFile1.InitialDirectory = "D:\\CSharp";
            //筛选打开文件的类型为RTF格式
            openFile1.DefaultExt = "*.rtf";
            openFile1.Filter = "RTF Files|*.rtf";
            //判断用户是否从打开文件对话框中选择了一个文件
            if(openFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK&&
                openFile1.FileName.Length>0)
            {
                myNote.LoadFile(openFile1.FileName);
            }
            //用ANSI编码格式保存txt文本避免出现乱码
            //myNote.LoadFile("D:\\CSharp\\notes\\test.txt", RichTextBoxStreamType.PlainText);
            //myNote.LoadFile("D:\\CSharp\\notes\\test.rtf", RichTextBoxStreamType.RichText);
        }

对于txt文件,如果不是ANSI编码格式的如何解决?
2. 保存文件
同样添加一个button按钮,表示保存按钮,注册单击事件

private void save_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFile1 = new SaveFileDialog();
            saveFile1.InitialDirectory = "D:\\CSharp";
            saveFile1.DefaultExt = "*.rtf";
            saveFile1.Filter = "RTF Files|*.rtf";
            if(saveFile1.ShowDialog() ==System.Windows.Forms.DialogResult.OK
                &&saveFile1.FileName.Length>0)
            {
                myNote.SaveFile(saveFile1.FileName);
            }
            //myNote.SaveFile("D:\\CSharp\\notes\\test.rtf");
        }

  1. 链接跳转
    注册RichTextBox的LinkClicked事件
private void myNote_LinkClicked(object sender, LinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start(e.LinkText);
        }
  1. 右键复制、粘贴
    a. 创建一个contextMenuScrip,添加项:复制、粘贴
    b. 选中复制:注册其Click事件
    代码:
 private void copy_Click(object sender, EventArgs e)
        {
            Clipboard.SetText(myNote.SelectedText);
        }

选中粘贴,注册其Click事件

 private void paste_Click(object sender, EventArgs e)
        {
            myNote.Paste();
        }

c. 将该contextMenuScrip绑定到富文本框

  1. 插入图片
    创建button
    代码:
private void image_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.DefaultExt = "*.jpg";
            openFileDialog1.Filter = "Image Files|*.jpg";
            if(openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK&&
                openFileDialog1.FileName.Length>0)
            {
                Image insertImage = Image.FromFile(openFileDialog1.FileName);
                Clipboard.SetImage(insertImage);
                myNote.Paste();
            }
        }
  1. 撤销与重做
    创建button
 //撤销
        private void unDo_Click(object sender, EventArgs e)
        {
            myNote.Undo();
        }
        //重做
        private void reDo_Click(object sender, EventArgs e)
        {
            myNote.Redo();
        }
  1. 清空(含清空确认按钮)
    创建button
 private void clear_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("是否要清空MyNote中的所有内容?","清空确认", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            if(result == DialogResult.Yes)
            {
                myNote.Clear();
            }
        }
  1. 设计器界面
    在这里插入图片描述
  2. 完整代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace study_03
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //打开
        private void open_Click(object sender, EventArgs e)
        {
            //创建一个打开文件对话框
            OpenFileDialog openFile1 = new OpenFileDialog();
            //限定打开文件的初始化文件目录
            openFile1.InitialDirectory = "D:\\CSharp";
            //筛选打开文件的类型为RTF格式
            openFile1.DefaultExt = "*.rtf";
            openFile1.Filter = "RTF Files|*.rtf";
            //判断用户是否从打开文件对话框中选择了一个文件
            if(openFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK&&
                openFile1.FileName.Length>0)
            {
                myNote.LoadFile(openFile1.FileName);
            }
            //用ANSI编码格式保存txt文本避免出现乱码
            //myNote.LoadFile("D:\\CSharp\\notes\\test.txt", RichTextBoxStreamType.PlainText);
            //myNote.LoadFile("D:\\CSharp\\notes\\test.rtf", RichTextBoxStreamType.RichText);
        }
        //另存为
        private void save_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFile1 = new SaveFileDialog();
            saveFile1.InitialDirectory = "D:\\CSharp";
            saveFile1.DefaultExt = "*.rtf";
            saveFile1.Filter = "RTF Files|*.rtf";
            if(saveFile1.ShowDialog() ==System.Windows.Forms.DialogResult.OK
                &&saveFile1.FileName.Length>0)
            {
                myNote.SaveFile(saveFile1.FileName);
            }
            //myNote.SaveFile("D:\\CSharp\\notes\\test.rtf");
        }
        //注册链接跳转
        private void myNote_LinkClicked(object sender, LinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start(e.LinkText);
        }
        //右键复制
        private void copy_Click(object sender, EventArgs e)
        {
            Clipboard.SetText(myNote.SelectedText);
        }
        //右键粘贴
        private void paste_Click(object sender, EventArgs e)
        {
            myNote.Paste();
        }
        //清空
        private void clear_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("是否要清空MyNote中的所有内容?","清空确认", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            if(result == DialogResult.Yes)
            {
                myNote.Clear();
            }
        }
        //插入图片
        private void image_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.DefaultExt = "*.jpg";
            openFileDialog1.Filter = "Image Files|*.jpg";
            if(openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK&&
                openFileDialog1.FileName.Length>0)
            {
                Image insertImage = Image.FromFile(openFileDialog1.FileName);
                Clipboard.SetImage(insertImage);
                myNote.Paste();
            }
        }
        //撤销
        private void unDo_Click(object sender, EventArgs e)
        {
            myNote.Undo();
        }
        //重做
        private void reDo_Click(object sender, EventArgs e)
        {
            myNote.Redo();
        }
    }
}

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinForms ,可以使用 RichTextBox 控件实现文本编辑框。RichTextBox 控件提供了丰的文本编辑功能,包括字体样式、字号、颜色、对齐方式等。 要在 WinForms 使用 RichTextBox 控件,首先需要在 Visual Studio 的工具箱RichTextBox 控件拖放到窗体上。然后,可以通过代码或者属性窗口对 RichTextBox 进行进一步的设置和操作。 以下是一个简单的示例代码,演示如何创建一个基本的文本编辑框: ```c# using System; using System.Windows.Forms; namespace RichTextBoxDemo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // 设置 RichTextBox 的一些属性,比如大小、位置等 richTextBox1.Size = new Size(400, 300); richTextBox1.Location = new Point(10, 10); // 设置字体样式、字号和颜色 richTextBox1.Font = new Font("Arial", 12, FontStyle.Regular); richTextBox1.ForeColor = Color.Black; // 设置文本对齐方式 richTextBox1.SelectionAlignment = HorizontalAlignment.Left; // 添加事件处理程序,比如点击按钮时插入文本 button1.Click += Button1_Click; // 将 RichTextBox 添加到窗体 Controls.Add(richTextBox1); } private void Button1_Click(object sender, EventArgs e) { // 在 RichTextBox 插入文本 richTextBox1.AppendText("Hello, world!"); } } } ``` 在这个示例,我们创建了一个窗体,并在窗体加载时设置了 RichTextBox 的一些属性。我们还添加了一个按钮,点击按钮时会在 RichTextBox 插入文本。 这只是一个简单的示例,你可以根据自己的需求进一步扩展文本编辑框的功能。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值