كيفية نقل شريط التمرير من قبل سطر واحد؟ (في C # RichTextBox)

StackOverflow https://stackoverflow.com/questions/205794

  •  03-07-2019
  •  | 
  •  

سؤال

لبلدي C # RichTextBox، أريد أن أفعل نفس الشيء برمجيا كما النقر فوق السهم في أعلى شريط التمرير العمودي، والتي تتحرك في RichTextBox عرض من قبل سطر واحد. ما هو رمز لهذا؟ شكرا!

هل كانت مفيدة؟

المحلول

وهنا هو ما أقوم به:

using System.Runtime.InteropServices;

[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, uint wMsg, 
                               UIntPtr wParam, IntPtr lParam);

وبعد ذلك الاتصال على:

SendMessage(myRichTextBox.Handle, (uint)0x00B6, (UIntPtr)0, (IntPtr)(-1));

ويبدو أن العمل OK - قد تحتاج إلى قرص الأمور قليلا، على الرغم

.

وعلى أمل أن يساعد.

نصائح أخرى

لتكون مرجعا في المستقبل الرسالة EM_LINESCROLL هو ما تقوم بإرسالها إلى أي تحكم التحرير متعدد الخطوط لتعيين موضع التمرير. يمكنك التمرير عموديا أو أفقيا. انظر MSDN للحصول على مزيد من التفاصيل.

ويمكنك أيضا استخدام الأسلوب تحرير منسق التحديد، حيث قمت بتعيين مؤشر حرف (التي يمكنك الحصول عليها مع EM_LINEINDEX) استدعاء ثم RichEdit.ScrollToCaret أي:

RichEdit.SelectionStart = SendMessage(RichEdit.Handle, EM_LINEINDEX, ScrollTo, 0);
RichEdit.ScrollToCaret();

وهذا سوف انتقل هذا الخط إلى أعلى عنصر تحكم التحرير.

وwindow.scrollBy (0،20)؛

وهذا سوف تمرير الإطار. 20 هو القيمة التقريبية ولقد استخدمت في الماضي الذي يساوي عادة سطر واحد ... ولكن بالطبع حجم الخط قد تؤثر مدى سطر واحد هو حقا.

إذا كنت تستطيع الحصول على السيطرة التمرير لمربع النص الغني، يجب أن تكون قادرا على الحصول على الممتلكات SmallChange واستخدام ذلك لتمرير النص.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top