Текстовое поле WinForms Изменение полей? - PullRequest
0 голосов
/ 08 января 2011

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

Когда я загружаю небольшой (или, может быть, короткий, лучше термин) файл, он выглядит как окно сверху.Когда я загружаю файл большего размера, он выглядит как окно внизу.
http://dl.dropbox.com/u/16985121/Images/ViewAsBytes.PNG

Это 10pt Courier New, но, похоже, это происходит с любым шрифтом, который я пробую.Всегда есть этот дополнительный столбец, и если для этого столбца не хватит места, он просто втиснется во все, что мог, в это пространство, которое ранее не использовал.Я пытался настроить всевозможные переменные, а также сравнивать текстовое поле до и после добавления текста из файла (который читается в байтах из FileStream и затем подается в StringBuilder), но, похоже, ничего не меняетсяхотя что-то явно отличается.

Я могу придумать для этого несколько разных обходных путей, но теперь меня больше интересует, что TextBox думает именно так, чем выполнение моей программы.У кого-нибудь есть идеи?

Вот код, который считывает данные и помещает их в текстовое поле:

FileStream stream = new FileStream(files[0], FileMode.Open);

StringBuilder sb = new StringBuilder();

int byteIn = stream.ReadByte();
while (byteIn != -1)
{
    sb.Append('[');

    if (byteIn < 100)
        sb.Append('0');
    if (byteIn < 10)
        sb.Append('0');

    sb.Append(byteIn.ToString());

    sb.Append(']');

    byteIn = stream.ReadByte();
}

txtView.Text = sb.ToString();

stream.Close();

1 Ответ

4 голосов
/ 08 января 2011

Это потому, что для свойства WordWrap установлено значение True.Установите его в False, установите Multiline в True и ScrollBars в оба.Присоедините Environment.NewLine к генерируемой вами строке, каждые 16 байтов являются нормой для шестнадцатеричных программ просмотра.Используйте byte.ToString ("X2") для генерации шестнадцатеричной строки вместо десятичной строки.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...