WinForms Textbox更改其边距?

时间:2011-01-08 13:26:23

标签: c# winforms textbox margin multiline

所以我一直在努力拼凑一个游戏,并决定我想要一个小程序来显示一个文件,每个字符被其字节等效替换,用于处理编码保存和诸如此类的东西。认为这是一个上篮。三个小时后,我一直在挣扎着想要解决这个问题。

当我加载一个小的(或者可能是短的是更好的术语)文件时,它看起来像顶部的窗口。当我加载一个更大的文件时,它看起来像底部的窗口 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 个答案:

答案 0 :(得分:4)

这是因为您将WordWrap属性设置为True。将其设置为False,将Multiline设置为True,将ScrollBars设置为Both。将Environment.NewLine附加到您生成的字符串,每16个字节是十六进制查看器的标准。使用byte.ToString(“X2”)生成十六进制字符串而不是十进制字符串。

您现在拥有完整的可滚动数据视图,支持任何数量。允许用户调整窗口大小,这样她就不必水平滚动。或者只是把它做得足够大。