13 InitializeComponent();
14 textBox.Dock = DockStyle.Fill;
15 textBox.MouseWheel +=
new MouseEventHandler(Code_MouseWheel);
16 textBox.TextChanged +=
new EventHandler(textBox_TextChanged);
17 textBox.VScroll +=
new EventHandler(textBox_Scroll);
18 textBox.FontChanged +=
new EventHandler(textBox_FontChanged);
19 textBox.WordWrap =
false;
20 textBox.AcceptsTab =
true;
21 panel.Controls.Add(textBox);
22 lineBox.Dock = DockStyle.Fill;
23 lineBox.ScrollBars = RichTextBoxScrollBars.None;
24 panel2.Controls.Add(lineBox);
26 textBox.SelectionTabs =
new int[] { tabSize, tabSize * 2, tabSize * 3, tabSize * 4, tabSize * 5, tabSize * 6 };
67 _components =
new System.ComponentModel.Container();
72 [System.ComponentModel.DefaultValue(0)
73 , System.ComponentModel.Category(
"Appearance")
74 , System.ComponentModel.Description
75 (
"Gets or sets the vertical scroll bar's position"
85 set { SetScroll(value, Win32.WM_VSCROLL, Win32.SB_VERT); }
86 get {
return GetScroll(Win32.SB_VERT); }
89 [System.ComponentModel.DefaultValue(0)
90 , System.ComponentModel.Category(
"Appearance")
91 , System.ComponentModel.Description
92 (
"Gets or sets the horizontal scroll bar's position"
105 set { SetScroll(value, Win32.WM_HSCROLL, Win32.SB_HORZ); }
106 get {
return GetScroll(Win32.SB_HORZ); }
109 [System.ComponentModel.Description
110 (
"Fired when the scroll bar's vertical position changes"
112 , System.ComponentModel.Category(
"Property Changed")
122 base.WndProc(ref message);
123 if (message.Msg == Win32.WM_VSCROLL
124 || message.Msg == Win32.WM_HSCROLL
125 || message.Msg == Win32.WM_MOUSEWHEEL
126 ) TryFireScrollEvent();
132 (System.Windows.Forms.KeyEventArgs e
136 TryFireScrollEvent();
140 (System.Windows.Forms.KeyEventArgs e
144 TryFireScrollEvent();
154 TryFireScrollEvent();
160 (System.Windows.Forms.MouseEventArgs e
164 TryFireScrollEvent();
168 (System.Windows.Forms.MouseEventArgs e
172 TryFireScrollEvent();
178 (System.Windows.Forms.MouseEventArgs e
182 if (e.Button != System.Windows.Forms.MouseButtons.None)
183 TryFireScrollEvent();
196 base.OnFontChanged(e);
197 using (System.Drawing.Graphics graphics = this.CreateGraphics())
198 _fontWidth = (
int)graphics.MeasureString(
"W", this.Font).Width;
199 TryFireScrollEvent();
210 if (disposing && (_components !=
null))
211 _components.Dispose();
212 base.Dispose(disposing);
221 private void SetScroll
223 , uint windowsMessage
224 ,
int scrollBarMessage
228 ((System.IntPtr)this.Handle
234 ((System.IntPtr)this.Handle
236 , 4 + 0x10000 * value
246 private int GetScroll
247 (
int scrollBarMessage
250 return Win32.GetScrollPos
251 ((System.IntPtr)this.Handle
259 private void TryFireScrollEvent()
263 TryFireHorizontalScrollEvent();
264 TryFireVerticalScrollEvent();
272 private void TryFireHorizontalScrollEvent()
279 int lastScrollPosition = _lastHorizontalScrollPosition;
283 if (scrollPosition == lastScrollPosition)
286 _lastHorizontalScrollPosition = scrollPosition;
290 ,
new System.Windows.Forms.ScrollEventArgs
291 (scrollPosition < lastScrollPosition - _fontWidth
292 ? System.Windows.Forms.ScrollEventType.LargeDecrement
293 : scrollPosition > lastScrollPosition + _fontWidth
294 ? System.Windows.Forms.ScrollEventType.LargeIncrement
295 : scrollPosition < lastScrollPosition
296 ? System.Windows.Forms.ScrollEventType.SmallDecrement
297 : System.Windows.Forms.ScrollEventType.SmallIncrement
300 , System.Windows.Forms.ScrollOrientation.HorizontalScroll
309 private void TryFireVerticalScrollEvent()
314 int lastScrollPosition = _lastVerticalScrollPosition;
318 if (scrollPosition == lastScrollPosition)
321 _lastVerticalScrollPosition = scrollPosition;
325 ,
new System.Windows.Forms.ScrollEventArgs
326 (scrollPosition < lastScrollPosition - 1
327 ? System.Windows.Forms.ScrollEventType.LargeDecrement
328 : scrollPosition > lastScrollPosition + 1
329 ? System.Windows.Forms.ScrollEventType.LargeIncrement
330 : scrollPosition < lastScrollPosition
331 ? System.Windows.Forms.ScrollEventType.SmallDecrement
332 : System.Windows.Forms.ScrollEventType.SmallIncrement
335 , System.Windows.Forms.ScrollOrientation.VerticalScroll
341 private int _lastVerticalScrollPosition;
342 private int _lastHorizontalScrollPosition;
343 private int _fontWidth;
344 private System.ComponentModel.IContainer _components =
null;
347 private static class Win32
350 public const uint WM_HSCROLL = 0x114;
351 public const uint WM_VSCROLL = 0x115;
352 public const uint WM_MOUSEWHEEL = 0x20A;
353 public const int SB_VERT = 0x1;
354 public const int SB_HORZ = 0x0;
356 [System.Runtime.InteropServices.DllImport(
"user32.dll")]
357 public static extern int SetScrollPos
363 [System.Runtime.InteropServices.DllImport(
"user32.dll")]
364 public static extern int GetScrollPos
369 [System.Runtime.InteropServices.DllImport
371 , EntryPoint =
"PostMessageA")
373 public static extern bool PostMessage