2011-01-08 122 views
0

所以我一直在拼凑一个游戏,并决定我想要一个小程序来显示一个文件,每个字符替换为它的字节等价物,用于编码保存和whatnot。想象它会上篮。三个小时后,我一直在试图弄清楚这个问题。WinForms文本框更改边距?

当我加载一个小(或者可能是短期是更好的术语)文件,它看起来像顶部的窗口。当我加载一个更大的文件时,它看起来就像是底部的窗口。
http://dl.dropbox.com/u/16985121/Images/ViewAsBytes.PNG

这是10PT宋体,但它似乎与任何字体我尝试发生。总是有那么多的柱子,如果柱子没有足够的空间,它只会挤压它以前没有使用过的空间。我试过调整各种变量,以及比较文本框前后添加文件的文本(从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(); 

回答

4

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

您现在有一个完整的可滚动数据视图,支持任何数量。允许用户调整窗口大小,使其不必水平滚动。或者只是让它足够大。

+0

那么这个关于wordwrap是不可避免的? – 2011-01-08 22:15:37