簡體   English   中英

為C#中的富文本框分配內存

[英]Allocating memory for a rich text box in C#

我需要在C#中將文本文件加載到RichTextBox中。 將文本文件加載到富文本框中應以C ++方式完成。

有什么方法可以將文件加載到富文本框中,例如下面的C ++代碼?

以下C ++代碼的說明:

這里的句柄是VC ++文本框句柄,為文本框句柄分配內存。基於分配的內存,緩沖區中的內容被加載到C ++的文本框中。 如何在C#中實現此行為?

C ++代碼:

length = (UINT) file.GetLength();
editHandle = pCEdit->GetHandle();
if (LocalReAlloc(editHandle, length + 1, LHND) == NULL )
{
      file.Close();
      return SF_MEM_ALLOC_ERROR;
}

// read file into the editBuffer
file.Read( (editBuffer = 
    (LPSTR) LocalLock(editHandle)), length );
editBuffer[length] = 0;
LocalUnlock( editHandle );
// Write it to the Text box, from the buffer
pCEdit->SetWindowText(A2T(editBuffer));

上面的代碼沒有任何對齊問題。

對於上面的C ++代碼,我只使用了以下幾行C#代碼

C#代碼:

    private void button1_Click(object sender, EventArgs e)
    {
        string fullPath = "C:\\report.txt";
        richTextBox1.LoadFile(fullPath, RichTextBoxStreamType.PlainText);
    }

但是這種在Rich Text框中加載的方法會導致對齊問題。

我加載的文本文件包含很多空白和制表符。 如何根據加載的文件大小為C#中的RTF文本框分配內存? 用於檢查對齊問題。 請在以下鏈接中找到屏幕截圖

C#代碼的輸出: http : //e.pictureupload.us/114559970552285a9a71816.png

我認為可能會有不同的標簽設置(我的意思是一個標簽的空格數)

保存數據時,應在文件中正確格式化字符串。 問題是制表符的大小。 如前所述,您的文件包含空格和制表符。 因此,不同的標簽大小(可能用於記事本和Visual Studio字符串)是主要問題。

一種可能的解決方法是僅使用制表符以完全格式化的方式(不使用空格)保存文件。

如果要在.NET中寫入文件, 請參閱此鏈接以保存文件

謝謝大家的投入。

上面的C ++代碼使用8位LPSTR作為緩沖區。 富文本框的問題是它不支持Unicode-8位字符...僅支持-16位字符

代替富文本框,我們可以在只讀模式下使用Unicode-8位 ..文本框。

    private void button1_Click(object sender, EventArgs e)
    {
        string fullPath = "C:\\report.txt";
        byte[] byteArra = System.IO.File.ReadAllBytes(fullPath);
        textBox1.Text = Encoding.UTF8.GetString(byteArra);
    }

在Visual C ++中使用以下簡單代碼即可實現您的結果,它只是將文件傳輸為RTB文本,為此我已經苦苦掙扎了兩天,我只是通過將您的C#代碼覆蓋到C ++ / CLR而實現了

String^ fullPath = "C:\\report.txt";
richTBox1->LoadFile(fullPath, RichTextBoxStreamType::PlainText);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM