PDA

View Full Version : سوال: طول کشیدن لود متن طولانی در RichTextBox



nedaei
پنج شنبه 16 دی 1395, 21:10 عصر
با سلام خدمت دوستان عزیز
من میخام توی RichTextBox متنی رو لود کنم که طولانی هست لذا طول میکشه میخام ببینم راهنی نیست که این مشکل برطرف بشه مثلا تیکه تیکه لود کنه ؟
لطفا راهنمایی کنید

336699
شنبه 18 دی 1395, 19:43 عصر
با سلام خدمت دوستان عزیز
من میخام توی RichTextBox متنی رو لود کنم که طولانی هست لذا طول میکشه میخام ببینم راهنی نیست که این مشکل برطرف بشه مثلا تیکه تیکه لود کنه ؟
لطفا راهنمایی کنید

سلام
حجم فایل و فرمت فایل ؟؟؟ :متفکر:

nedaei
یک شنبه 19 دی 1395, 11:06 صبح
با سلام و تشکر ازشما
نه دوست عزیز یک فایل اکسس دارم که کل قرآن توش هست میخام سوره های که میخام توی
RichTextBox فرا خوانی کنم حجمی نداره توی گرید یک چشم به هم زدن میاد ولی یک مشکلاتی داره که بهتره ازRichTextBox استفاده کنم توی لیست باکس هم فوری میاره ولی مشکلش اونجا اینه خطها شکسته نمیشه مثلا یک آیه که چندین خط هست رو توی یک خط میاره و این خوب نیست

roo.row
یک شنبه 19 دی 1395, 11:17 صبح
با سلام

اگر هر سوره داخل یه یلد هست میتونید فیلد ب فیلد لود کنید .

مقدار ارتفاع متن هر سوره توی ریچ تکست باکس رو پیدا کنید و نسبت به حرکت اسکرول بنویسدید که
به ترتیتب سوره های بعدی رو لود کنه . اینجوری نه برنامتون با لگ مواجه میشه و نه کاربر به مشکل میخوره

با تشکر

nedaei
یک شنبه 19 دی 1395, 20:52 عصر
با سلام و تشکر از شما
من نمی خام کل قرآن رو یکجا لود کنم من اسامی سوره ها رو توی کومبو باکس نوشتم با انتخاب هر سوره همان سوره توی ریچ تکس نمایش داده میشه حالا مشکل توی سوره های بزرگ مثل بقره است که دیر لود میشن این رو میخام حل کنم لطفا راهنمایی کنید و این که شما گفتید به ترتیب لود کنم هم بلد نیستم و چطوری میشه توی اسکرول مرحله به مرحله لود کرد؟

roo.row
دوشنبه 20 دی 1395, 10:44 صبح
با سلام

قطعا تکس باکس شما یه اندازه ای داره که مقدار محدودی ایه توش میتونه نمایش داده بشه شما می تونید از همون روشی که گفتم تغییرات اسکرول رو بدست بیارید و بعد نسبت به اون تعداد کاراکتر های معینی رو بارگزاری کنید . البته اگر از یه فایل تکست سوره استفاده کنید این کار ساده تره .

با تشکر

roo.row
سه شنبه 21 دی 1395, 16:51 عصر
با سلام

در جواب پیامتان برای بدست آوردن موقعیت اسکرول دو راه معرفی میکنم .

ازآنجایی کنترل ریچ تکست باکس توانایی بازگشت موقعیت اسکرول را ندارد باید از یک کنترل تکمیلی استفاده کنیم برای اینکار لینک زیر رو ببینید .

https://www.codeproject.com/tips/868653/extended-version-of-extended-rich-text-box-richtex

با کنترل معرفی شده در این لینک میتونید موقعیت اسکرول رو با تابع زیر بدست بیارید .

scrollposition = richtextbox.GetScrollPosition()

2- و اگر نمیخواهید از کنترل استفاده کنید با اضافه کردن کد زیر به ریچ تکست باکس استاندارد یه ادیت شدشو بسازید که دو خاصیت اضافه تر داره .

Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.Windows.Forms

Namespace WindowsFormsApplication1

Public Class MyRichTextBox
Inherits RichTextBox
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function GetScrollPos(ByVal hWnd As IntPtr, ByVal nBar As Integer) As Integer
End Function

<DllImport("user32.dll")> _
Private Shared Function SetScrollPos(ByVal hWnd As IntPtr, ByVal nBar As Integer, ByVal nPos As Integer, ByVal bRedraw As Boolean) As Integer
End Function

Private Const SB_HORZ As Integer = &H0
Private Const SB_VERT As Integer = &H1

''' <summary>
''' Gets and Sets the Horizontal Scroll position of the control.
''' </summary>
Public Property HScrollPos() As Integer
Get
Return GetScrollPos(DirectCast(Me.Handle, IntPtr), SB_HORZ)
End Get
Set(ByVal value As Integer)
SetScrollPos(DirectCast(Me.Handle, IntPtr), SB_HORZ, value, True)
End Set
End Property

''' <summary>
''' Gets and Sets the Vertical Scroll position of the control.
''' </summary>
Public Property VScrollPos() As Integer
Get
Return GetScrollPos(DirectCast(Me.Handle, IntPtr), SB_VERT)
End Get
Set(ByVal value As Integer)
SetScrollPos(DirectCast(Me.Handle, IntPtr), SB_VERT, value, True)
End Set
End Property
End Class
End Namespace




اون دو خاصیت خاصیت های HScrollPos و VScrollPos هستند که فکر کنم مشخص هست چی برمیگردونند.

خوب فکر کنم با این باقی مشکلاتتون حل بشه .

با تشکر