2011-01-08 123 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