为什么无法在文本框中输入文本从特定编码后的文本

本文关键字:文本 编码 为什么 输入 | 更新日期: 2023-09-27 18:11:07

有没有人知道如何编辑文本框内的文本从原始字节读取特定编码后的文本?

似乎唯一允许的键是:主页,结束,页面上下,删除…

如果你尝试按任何键,如:A-Z,它不会显示,文本框的行为就像key -down事件被覆盖的地方e.p suppress设置为true。

代码:'

using System;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        byte[] _buffer;
        public Form1()
        {
            InitializeComponent();
            Text = "Encoding (Test)";
            textBox1.Text = "1252"; // Western European (Windows)
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (_buffer == null)
            {
                MessageBox.Show("Select file to read from!");
                buttonOpenFile_Click(null, null);
                return;
            }
            var encoding = Encoding.GetEncoding(int.Parse(textBox1.Text));
            textBox2.Text = encoding.GetString(_buffer);
        }
        private void buttonOpenFile_Click(object sender, EventArgs e)
        {
            using (var of = new OpenFileDialog())
            {
                if (of.ShowDialog() == DialogResult.OK)
                {
                    Text = of.SafeFileName;
                    ReadToBuffer(of.FileName);
                }
            }
        }
        private void ReadToBuffer(string file)
        {
            using (var fileIO = new FileStream(file, FileMode.Open, FileAccess.Read))
            {
                _buffer = new byte[fileIO.Length];
                fileIO.Read(_buffer, 0, (int)fileIO.Length);
            }
        }
    }
}

点击这里下载

为什么无法在文本框中输入文本从特定编码后的文本

显示您试图打开的文件大于TextBox.MaxLength。我能够通过创建一个简单的文本文件来重现这个问题,该文件中填充了超过TextBox控件的MaxLength的随机字符。