c#如何任意去选择richtextbox的文本

我想实现richtextbox的文本可以被我任意选择放进label中,并且实现选择中的文本进行加密显示,如何任意选择文本并进行加密?

给richtextbox注册selectionchanged事件


        private void richTextBox1_SelectionChanged(object sender, EventArgs e)
        {
            this.label1.Text = richTextBox1.SelectedText;
            //做你的加密工作
            //EncryptText(this.label1.Text);
        }
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/178834
  • 以下回答来自chatgpt:

    我可以提供以下解决方案:

    1. 监听用户选择文本的事件。 使用RichTextBox控件的SelectionChanged事件来判断用户是否选择了文本,代码如下:
    private void richTextBox1_SelectionChanged(object sender, EventArgs e)
    {
        if (richTextBox1.SelectionLength > 0)
        {
            // 用户选择了文本
        }
    }
    
    1. 弹出提示框,让用户选择需要加密的文本。 使用MessageBox.Show方法来弹出提示框,让用户确认选择的文本范围。代码如下:
    private void richTextBox1_SelectionChanged(object sender, EventArgs e)
    {
        if (richTextBox1.SelectionLength > 0)
        {
            if (MessageBox.Show("是否需要加密选中的文本?", "加密确认", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                // 用户选择了要加密文本
                string selectedText = richTextBox1.SelectedText;
                // TODO: 加密代码
            }
        }
    }
    
    1. 加密选中的文本。 可以使用C#自带的加密方法,例如AES加密算法。代码如下:
    private void richTextBox1_SelectionChanged(object sender, EventArgs e)
    {
        if (richTextBox1.SelectionLength > 0)
        {
            if (MessageBox.Show("是否需要加密选中的文本?", "加密确认", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                // 用户选择了要加密文本
                string selectedText = richTextBox1.SelectedText;
    
                // 使用AES加密算法加密文本
                byte[] key = Encoding.UTF8.GetBytes("1234567890123456");
                byte[] iv = Encoding.UTF8.GetBytes("1234567890123456");
                byte[] inputBytes = Encoding.UTF8.GetBytes(selectedText);
                using (Aes aes = Aes.Create())
                {
                    aes.Key = key;
                    aes.IV = iv;
    
                    using (MemoryStream ms = new MemoryStream())
                    {
                        using (CryptoStream cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write))
                        {
                            cs.Write(inputBytes, 0, inputBytes.Length);
                            cs.FlushFinalBlock();
                            byte[] encryptedBytes = ms.ToArray();
                            string encryptedText = Convert.ToBase64String(encryptedBytes);
                            // 在RichTextBox中显示加密后的文本
                            richTextBox1.SelectedText = encryptedText;
                        }
                    }
                }
            }
        }
    }
    

    需要注意的是,使用加密算法加密后的文本是无法直接在RichTextBox控件中显示的,需要将加密后的文本转换为Base64编码再进行显示。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^