PDA

View Full Version : سوال: نوشتن خط به خط در کنترل RichTextBox



mehdi.safavie
یک شنبه 20 بهمن 1392, 07:09 صبح
درود;
تو یه فایل txt متنی متشکل از چندین خط رو آماده کردم .
حالا میخوام که این متن رو خوانده و درون کنترل RichTextBox قرار بدم !
دستوری که من نوشتم کاملا اشتباهه !
از چه راهی باید برم تا به جواب درست برسم ؟


Dim Lines1 As String() = IO.File.ReadAllLines(Application.StartupPath & "\Save\Text.txt")
Dim FS1 As New FileStream(Application.StartupPath & "\Save\Text.txt", FileMode.Open, FileAccess.Read)
Dim SR1 As New StreamReader(FS1)
SR1.BaseStream.Seek(0, SeekOrigin.Begin)
Dim ss As String
While SR1.Peek > -1
ss = SR1.ReadLine()
RichTextBox1.Text = RichTextBox1.Text & ss & vbNewLine
End While


من فقط در مورد قسمت RichTextBox کمک نیاز دارم !
قسمت داخل حلقه For رو برام تکمیل کنین ! ممنون .

boveiryghasem
یک شنبه 20 بهمن 1392, 08:07 صبح
درود بر شما

یه کد دارم واست ساده تر و نیاز به حلقه هم نداره در ضمن دادن TEXT فایل به Rich باید این طوری من نوشتم بهش بدی البته شاید جور دیگه ای بشه ولی این کارتو راه بندازه:

Dim OpenFile1 As New OpenFileDialog
OpenFile1.Filter = "txt Files (Text Files)|*.txt"
OpenFile1.Title = "Open a Document."
If (OpenFile1.ShowDialog = System.Windows.Forms.DialogResult.OK) Then
Me.RichTextBox1.LoadFile(OpenFile1.FileName, RichTextBoxStreamType.PlainText)
End If

mehdi.safavie
یک شنبه 20 بهمن 1392, 09:26 صبح
درود;
عجب کد قشنگی بود !
فقط یه مشکلی به وجود میاره !
فایل متنی txt رو وقتی لود میکنه ، بعد از هر خط یه Enter در نظر میگیره ! چرا ؟

boveiryghasem
یک شنبه 20 بهمن 1392, 12:23 عصر
دوصد درود بر شما دوست خوب.
امتحان کردم مشکلی نداشت.

mehdi.safavie
دوشنبه 21 بهمن 1392, 18:24 عصر
درود;
ویرایشش کردم فایل رو دوباره درست شد ، من نفهمیدم چرا اینطور میکرد !
به هر حال ممنون

mehdi.safavie
دوشنبه 21 بهمن 1392, 19:17 عصر
درود;
نه مثله این که واقعا یه مشکلی هست :لبخند:
آقا همونطور که گفتم فایل txt رو ویرایش دستی کردم و بعد برنامه رو باز کردم خبری از اون Enter ها نبود !
متنی رو بهش اضافه کردم و ذخیره کردم ، دوباره که برنامه رو باز میکنی بین هر خط یه Enter در نظر میگیره !
با دستور RichTextBoxStreamType آشنایی ندارم ، متد هاش رو دستکاری کردم دیدم نه نتیجه نمیده بعضی از متد ها هم اصلا جواب نمیده !
به نظر شما مشکل از چیه ؟

mehdi.safavie
دوشنبه 28 بهمن 1392, 14:00 عصر
درود;
دوستان مدیران ، دو تا عکس آپلود کردم از مشکلم !
ببینید ، عکس "B" فایل نود پد من هست ، که با Encoding : UTF8 ذخیره شده !
عکس "A" برنامست که در یک RichTextBox با کدی که دوست عزیزمون دادن فایل متنی رو بار گذاری میکنم :

Dim OpenFile1 As New OpenFileDialog
OpenFile1.Filter = "txt Files (Text Files)|*.txt"
OpenFile1.Title = "Open a Document."
If (OpenFile1.ShowDialog = System.Windows.Forms.DialogResult.OK) Then
Me.RichTextBox1.LoadFile(OpenFile1.FileName, RichTextBoxStreamType.PlainText)
End If

حالا اگر برگردیم به فایل متنی ، و به صورت دستی کل متن داخلش رو پاک کنیم و دوباره به صورت دستی متنی رو بنویسیم و برنامه رو باز کنیم همه چیز عادی بار گذاری میشه !
ولی حالا یک خط به فایل متنی در برنامه اضافه کنیم یا اصلا اضافه نکنیم ولی از طریق دستور زیر فایل رو ویرایش کنیم :

Dim sw As StreamWriter = New StreamWriter("../test.txt",System.Text.Encoding.UTF8)
sw.WriteLine("یک متن یونیکد")
sw.Close()

در فایل متنی همون چیزی که در عکس "B" هست نمایش داده میشه اما برنامه رو که باز میکنی تو RichTextBox عکس "A" رو نشون میده ، بین هر خط یه Enter در نظر میگیره !


مشکلاتی رو که بررسی کردم اینا بود :
اول متوجه شدم بعد از هر بار ذخیره کردن اون رو با Encoding : ANSI ذخیره میکنه که با خط کد بالا که برای ذخیره کردن استفاده کردم و اضافه کردن نوع ذخیره سازی Encoding : UTF8 دیگه از اون نوع ذخیره نشد .
اگر بخوام مثله سوال اولم که تو همین تایپیک بیان کردم خط به خط تو RichTextBox بریزم درست در میاد که هم منطقی نیست و هم هنوز از اون روش جوابم رو نگرفتم !

ممنون میشم کسی یه کمک درست حسابی کنه

armin8651
دوشنبه 28 بهمن 1392, 15:00 عصر
از کد زیر برای خواندن از فایل متنی استفاده کن ببین بازم مشکل داری یا نه:

Using sr As New System.IO.StreamReader("آدرس فایل")
RichTextBox1.Text = sr.ReadToEnd
End Using

mehdi.safavie
دوشنبه 28 بهمن 1392, 15:45 عصر
نه همچنان همونطوریه

mehdi.safavie
چهارشنبه 30 بهمن 1392, 11:23 صبح
درود;
مدیران محترم ، کسی نیست نظر بده ؟