21 InitializeComponent();
22 textBox.Dock = DockStyle.Fill;
23 textBox.MouseWheel +=
new MouseEventHandler(Code_MouseWheel);
24 textBox.TextChanged +=
new EventHandler(textBox_TextChanged);
25 textBox.VScroll +=
new EventHandler(textBox_Scroll);
26 textBox.FontChanged +=
new EventHandler(textBox_FontChanged);
27 textBox.WordWrap =
false;
28 textBox.AcceptsTab =
true;
29 panel.Controls.Add(textBox);
30 lineBox.Dock = DockStyle.Fill;
31 lineBox.ScrollBars = RichTextBoxScrollBars.None;
32 panel2.Controls.Add(lineBox);
34 textBox.SelectionTabs =
new int[] { tabSize, tabSize * 2, tabSize * 3, tabSize * 4, tabSize * 5, tabSize * 6 };
73 _components =
new System.ComponentModel.Container();
78 [System.ComponentModel.DefaultValue(0)
79 , System.ComponentModel.Category(
"Appearance")
80 , System.ComponentModel.Description
81 (
"Gets or sets the vertical scroll bar's position"
86 set { SetScroll(value, Win32.WM_VSCROLL, Win32.SB_VERT); }
87 get {
return GetScroll(Win32.SB_VERT); }
90 [System.ComponentModel.DefaultValue(0)
91 , System.ComponentModel.Category(
"Appearance")
92 , System.ComponentModel.Description
93 (
"Gets or sets the horizontal scroll bar's position"
98 set { SetScroll(value, Win32.WM_HSCROLL, Win32.SB_HORZ); }
99 get {
return GetScroll(Win32.SB_HORZ); }
102 [System.ComponentModel.Description
103 (
"Fired when the scroll bar's vertical position changes"
105 , System.ComponentModel.Category(
"Property Changed")
114 base.WndProc(ref message);
115 if (message.Msg == Win32.WM_VSCROLL
116 || message.Msg == Win32.WM_HSCROLL
117 || message.Msg == Win32.WM_MOUSEWHEEL
118 ) TryFireScrollEvent();
124 (System.Windows.Forms.KeyEventArgs e
128 TryFireScrollEvent();
135 (System.Windows.Forms.KeyEventArgs e
139 TryFireScrollEvent();
149 TryFireScrollEvent();
155 (System.Windows.Forms.MouseEventArgs e
159 TryFireScrollEvent();
166 (System.Windows.Forms.MouseEventArgs e
170 TryFireScrollEvent();
176 (System.Windows.Forms.MouseEventArgs e
180 if (e.Button != System.Windows.Forms.MouseButtons.None)
181 TryFireScrollEvent();
194 base.OnFontChanged(e);
195 using (System.Drawing.Graphics graphics = this.CreateGraphics())
196 _fontWidth = (
int)graphics.MeasureString(
"W", this.Font).Width;
197 TryFireScrollEvent();
208 if (disposing && (_components !=
null))
209 _components.Dispose();
210 base.Dispose(disposing);
219 private void SetScroll
221 , uint windowsMessage
222 ,
int scrollBarMessage
226 ((System.IntPtr)this.Handle
232 ((System.IntPtr)this.Handle
234 , 4 + 0x10000 * value
244 private int GetScroll
245 (
int scrollBarMessage
248 return Win32.GetScrollPos
249 ((System.IntPtr)this.Handle
257 private void TryFireScrollEvent()
261 TryFireHorizontalScrollEvent();
262 TryFireVerticalScrollEvent();
270 private void TryFireHorizontalScrollEvent()
277 int lastScrollPosition = _lastHorizontalScrollPosition;
281 if (scrollPosition == lastScrollPosition)
284 _lastHorizontalScrollPosition = scrollPosition;
288 ,
new System.Windows.Forms.ScrollEventArgs
289 (scrollPosition < lastScrollPosition - _fontWidth
290 ? System.Windows.Forms.ScrollEventType.LargeDecrement
291 : scrollPosition > lastScrollPosition + _fontWidth
292 ? System.Windows.Forms.ScrollEventType.LargeIncrement
293 : scrollPosition < lastScrollPosition
294 ? System.Windows.Forms.ScrollEventType.SmallDecrement
295 : System.Windows.Forms.ScrollEventType.SmallIncrement
298 , System.Windows.Forms.ScrollOrientation.HorizontalScroll
307 private void TryFireVerticalScrollEvent()
312 int lastScrollPosition = _lastVerticalScrollPosition;
316 if (scrollPosition == lastScrollPosition)
319 _lastVerticalScrollPosition = scrollPosition;
323 ,
new System.Windows.Forms.ScrollEventArgs
324 (scrollPosition < lastScrollPosition - 1
325 ? System.Windows.Forms.ScrollEventType.LargeDecrement
326 : scrollPosition > lastScrollPosition + 1
327 ? System.Windows.Forms.ScrollEventType.LargeIncrement
328 : scrollPosition < lastScrollPosition
329 ? System.Windows.Forms.ScrollEventType.SmallDecrement
330 : System.Windows.Forms.ScrollEventType.SmallIncrement
333 , System.Windows.Forms.ScrollOrientation.VerticalScroll
339 private int _lastVerticalScrollPosition;
340 private int _lastHorizontalScrollPosition;
341 private int _fontWidth;
342 private System.ComponentModel.IContainer _components =
null;
344 private static class Win32
347 public const uint WM_HSCROLL = 0x114;
348 public const uint WM_VSCROLL = 0x115;
349 public const uint WM_MOUSEWHEEL = 0x20A;
350 public const int SB_VERT = 0x1;
351 public const int SB_HORZ = 0x0;
353 [System.Runtime.InteropServices.DllImport(
"user32.dll")]
354 public static extern int SetScrollPos
360 [System.Runtime.InteropServices.DllImport(
"user32.dll")]
361 public static extern int GetScrollPos
366 [System.Runtime.InteropServices.DllImport
368 , EntryPoint =
"PostMessageA")
370 public static extern bool PostMessage