WPF Шрифт Textbox фиксированной ширины (например, Hex Editor) - PullRequest
0 голосов
/ 09 ноября 2018

Я создаю инструмент разбора файлов в WPF, который позволяет мне регулировать длину строки до тех пор, пока данные не выстроятся в линию. Смотрите это видео около 2:10 https://www.youtube.com/watch?v=OMeghA82kSk

Мне действительно нужно исправить это, чтобы текст имел фиксированную ширину. Я думал о том, чтобы, возможно, сделать DataGridView и сделать каждую ячейку символом, но это кажется медленным и довольно глупым. Поскольку он постоянно воссоздает вид, он должен работать довольно быстро.

Я чувствую, что то, что я спрашиваю, не так уж и необычно, но я попытался использовать все шрифты с фиксированной шириной, но когда он выходит за пределы нормальных контрольных символов диапазона, он не выдерживает.

Я вижу другие приложения, такие как v64, которые делают именно то, что я ищу (см. Ниже). Нужно ли использовать что-то кроме TextBox? Какой идеальный способ сделать это?

enter image description here

1 Ответ

0 голосов
/ 09 ноября 2018

Хорошо, я нашел проблему. Во-первых, вы должны указать кодировку файла, иначе он пропустит несколько байтов. В моем случае это был пропуск \x86, который отбросил все.

Единственный способ, которым я понял это, было сделать:

string shortText = File.ReadAllText("Original.dat"); 
File.WriteAllText("New.dat", shortText); 

И затем выполняется байтовый анализ. Правильный путь заключается в следующем:

string shortText = File.ReadAllText("Wrapped.dat", Encoding.ASCII); 

Даже тогда, и даже с моноширинным шрифтом это не будет выглядеть правильно. Это связано с тем, что большинство шрифтов TTF не имеют определения вещей, которые не являются буквенно-цифровыми, поэтому вы добавляете регулярное выражение, чтобы удалить все остальное, и это работает.

shortText = Regex.Replace(shortText, @"[^\w\n',|\.@-]", " ", RegexOptions.None);
...