492 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			492 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.ComponentModel;
 | |
| using System.Drawing;
 | |
| using System.Data;
 | |
| using System.Text;
 | |
| using System.Windows.Forms;
 | |
| using VEPROMS.CSLA.Library;
 | |
| using Volian.Base.Library;
 | |
| 
 | |
| namespace Volian.Controls.Library
 | |
| {
 | |
| 	public partial class RtfRawItem : EditItem
 | |
| 	{
 | |
| 		#region IEditItem
 | |
| 		public override StepRTB MyStepRTB
 | |
| 		{
 | |
| 			get { return _MyStepRTB; }
 | |
| 		}
 | |
| 		public override int TableWidth
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return (int)_MyStepRTB.Width + RtfRawMargin;
 | |
| 			}
 | |
| 		}
 | |
| 		/// <summary>
 | |
| 		/// The left edge of the Tab (no visible tab, but use this for EditItem interfacing
 | |
| 		/// </summary>
 | |
| 		public override int ItemLeft
 | |
| 		{
 | |
| 			get { return Left + lblTab.Left; }
 | |
| 			set { Left = value - lblTab.Left; }
 | |
| 		}
 | |
| 		/// <summary>
 | |
| 		/// The Location of the Tab
 | |
| 		/// </summary>
 | |
| 		public override Point ItemLocation
 | |
| 		{
 | |
| 			get { return new Point(Location.X + lblTab.Left, Location.Y); }
 | |
| 			set { Location = new Point(value.X - lblTab.Left, value.Y); }
 | |
| 		}
 | |
| 		/// <summary>
 | |
| 		/// Width of the Tab and RichTextBox
 | |
| 		/// </summary>
 | |
| 		public override int ItemWidth
 | |
| 		{
 | |
| 			get { return Width - lblTab.Left; }
 | |
| 			set
 | |
| 			{
 | |
| 				Width = RtfRawMargin + value + lblTab.Left;
 | |
| 			}
 | |
| 		}
 | |
| 		/// <summary>
 | |
| 		/// Width of the RichTextBox
 | |
| 		/// </summary>
 | |
| 		public override int ContentWidth
 | |
| 		{
 | |
| 			get { return _MyStepRTB.Width; }
 | |
| 			set
 | |
| 			{
 | |
| 				Width = value + lblTab.Left + lblTab.Width;
 | |
| 			}
 | |
| 		}
 | |
| 		public override int BorderWidth { get { return (_MyStepRTB.Width - _MyStepRTB.ClientRectangle.Width); } }
 | |
| 		/// <summary>
 | |
| 		/// Location of the RichTextBox
 | |
| 		/// </summary>
 | |
| 		public override Point ContentLocation
 | |
| 		{
 | |
| 			get { return new Point(Location.X + _MyStepRTB.Left, Location.Y); }
 | |
| 			set { Location = new Point(value.X - _MyStepRTB.Left, value.Y); }
 | |
| 		}
 | |
| 		/// <summary>
 | |
| 		/// Left edge of the RichTextBox
 | |
| 		/// </summary>
 | |
| 		public override int ContentLeft
 | |
| 		{
 | |
| 			get { return Left + _MyStepRTB.Left; }
 | |
| 		}
 | |
| 		override public void AdjustTableWidthAndLocation()
 | |
| 		{
 | |
| 			Size sz = GetRtfRawSize(MyItemInfo.MyContent.Text);
 | |
| 			string tmp = MyItemInfo.MyContent.Text;
 | |
| 			if (MyItemInfo.MyContent.Text == "New Step") tmp = "";	// if coming from the tree view/insert before or after - rtf is 'New Step'
 | |
| 			MyStepRTB.Rtf = tmp;
 | |
| 			MyStepRTB.Width = sz.Width;
 | |
| 			MyStepRTB.Height = sz.Height;
 | |
| 			ItemLocation = TableLocation(MyStepSectionLayoutData, ItemWidth);
 | |
| 			Width = sz.Width; 
 | |
| 			Height = _MyStepRTB.Height + _MyStepRTB.Top + 7;
 | |
| 			ItemWidth = Width;
 | |
| 		}
 | |
| 		override public void SetToolTip(string tip)
 | |
| 		{
 | |
| 			DevComponents.DotNetBar.SuperTooltipInfo tpi = new DevComponents.DotNetBar.SuperTooltipInfo("", "", tip, null, null, DevComponents.DotNetBar.eTooltipColor.Lemon);
 | |
| 			_MyToolTip.MinimumTooltipSize = new Size(0, 24);
 | |
| 			_MyToolTip.TooltipDuration = 3;
 | |
| 			_MyToolTip.SetSuperTooltip(MyStepRTB, tpi);
 | |
| 			ToolTipOnOff(); // B2025-050 Show the tooltip based on User Options Settings
 | |
| 		}
 | |
| 		public override void ToolTipOnOff()
 | |
| 		{
 | |
| 			_MyToolTip.Enabled = VlnSettings.StepTypeToolTip; // B2025-XXX Show the tooltip based on User Options Settings
 | |
| 		}
 | |
| 		public override void RefreshContent()
 | |
| 		{
 | |
| 			IdentifyMe(false);
 | |
| 			MyStepRTB.Rtf = MyItemInfo.MyContent.Text;
 | |
| 			RefreshDisplay(false);
 | |
| 		}
 | |
| 		public override void RefreshOrdinal()
 | |
| 		{
 | |
| 			TabFormat = null;
 | |
| 		} 
 | |
| 		public override void HandleResize() {}
 | |
| 		public override void MatchExpanded() {}
 | |
| 		public override void ItemSelect()
 | |
| 		{
 | |
| 			// Was getting an Error that _MyStepRTB was Disposed RHM 20101217
 | |
| 			if (!_MyStepRTB.Disposing && !_MyStepRTB.Closed)
 | |
| 			{
 | |
| 				_MyStepRTB.Focus();
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				_MyLog.WarnFormat("Attempt to give Focus to Disposed Object {0}", MyID);
 | |
| 			}
 | |
| 			ScrollToCenter();
 | |
| 		}
 | |
| 		/// <summary>
 | |
| 		/// Sets the focus to this RTBItem
 | |
| 		/// </summary>
 | |
| 		public override void ItemShow()
 | |
| 		{
 | |
| 			_MyStepRTB.Focus();
 | |
| 			ScrollToCenter();
 | |
| 		}
 | |
| 		public override void SetActive()
 | |
| 		{
 | |
| 			this.BackColor = MyStepPanel.ActiveColor;
 | |
| 		}
 | |
| 		public override void SetText()
 | |
| 		{
 | |
| 			LastMethodsPush("SetText");
 | |
| 			if (MyItemInfo != null)
 | |
| 			{
 | |
| 				MyStepRTB.MyItemInfo = MyItemInfo;
 | |
| 				IdentifyMe(false);
 | |
| 			}
 | |
| 			LastMethodsPop();
 | |
| 		}
 | |
| 		public override void SetExpandAndExpander(ItemInfo itemInfo)
 | |
| 		{
 | |
| 			CanExpand = false;
 | |
| 		}
 | |
| 		public override void SaveCurrentAndContents()
 | |
| 		{
 | |
| 			SaveContents();
 | |
| 		}
 | |
| 		public override void RefreshDisplay(bool activeMode)
 | |
| 		{
 | |
| 			MyStepRTB.VwMode = MyStepPanel.VwMode; 
 | |
| 			Size sz = GetRtfRawSize(MyStepRTB.Rtf);
 | |
| 			if (MyStepRTB.Rtf == null || MyStepRTB.Rtf == ""  
 | |
| 				|| !(MyStepRTB.Rtf.ToUpper().Contains("OBJCLASS EQU")
 | |
| 				|| MyStepRTB.Rtf.ToUpper().Contains("OBJCLASS VIS")) //Support Visio
 | |
| 				)	// this is a new insert
 | |
| 			{
 | |
| 				sz.Width = 50;
 | |
| 				sz.Height = 50;
 | |
| 			}
 | |
| 			MyStepRTB.Width = sz.Width;
 | |
| 			MyStepRTB.Height = sz.Height;
 | |
| 			if (_MyParentEditItem != null) ItemLocation = new Point(300, _MyParentEditItem.Bottom);
 | |
| 			ItemLocation = TableLocation(MyStepSectionLayoutData, ItemWidth);
 | |
| 			Width = sz.Width;
 | |
| 			Height = _MyStepRTB.Height + _MyStepRTB.Top + 7;
 | |
| 			ItemWidth = Width;
 | |
| 			MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetButtonAndMenuEnabling(true); 
 | |
| 		}
 | |
| 		public override void ToggleEditView(E_ViewMode vwMode)
 | |
| 		{
 | |
| 			SaveContents();
 | |
| 		}
 | |
| 		public override string TabFormat
 | |
| 		{
 | |
| 			get { return null; }
 | |
| 			set { ;}
 | |
| 		}
 | |
| 		public override bool Expanded
 | |
| 		{
 | |
| 			get { return true; }
 | |
| 			set { ; }
 | |
| 		}
 | |
| 		public override bool CanExpand
 | |
| 		{
 | |
| 			get { return false; }
 | |
| 			set { ; }
 | |
| 		}
 | |
| 		public override int TabLeft { get { return lblTab.Left; } set { lblTab.Left = value; } }	//taken from griditem
 | |
| 		public override Font TabFont { get { return MyStepRTB.Font; } set { ; } }
 | |
| 		public override string TabText { get { return lblTab.Text; } }
 | |
| 		public override Point TabLocation { get { return lblTab.Location; } }
 | |
| 		public override Font ContentFont { get { return MyStepRTB.Font; } set { /*MyStepRTB.Font = value*/; } }
 | |
| 		public override float ContentTop { get { return MyStepRTB.Top; } }
 | |
| 		public override DialogResult ReplaceText(string rpltxt, string fndstr, bool caseSensitive, bool matchWholeWord, bool reverse, bool prompt, IWin32Window fndrpldlg)
 | |
| 		{
 | |
| 			return DialogResult.OK;
 | |
| 		}
 | |
| 		public override bool FindText(string str, bool caseSensitive, bool matchWholeWord, bool reverse)
 | |
| 		{
 | |
| 			return false;
 | |
| 		}
 | |
| 		public override void PositionToEnd()
 | |
| 		{
 | |
| 			return;
 | |
| 		}
 | |
| 		public override void PositionToStart()
 | |
| 		{
 | |
| 			return;
 | |
| 		}
 | |
| 		public override string SelectedTextForFind
 | |
| 		{
 | |
| 			get {return null;}
 | |
| 		}
 | |
| 		public override bool SpellCheckNext()
 | |
| 		{
 | |
| 			return false;
 | |
| 		}
 | |
| 		public override bool Empty
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return _MyStepRTB.Text == "";
 | |
| 			}
 | |
| 			set { _MyStepRTB.Text = value ? "" : " "; }
 | |
| 		}
 | |
| 		public override void RefreshTab()
 | |
| 		{
 | |
| 			TabFormat = null;
 | |
| 		}
 | |
| 		public override void SetupHeader(ItemInfo itemInfo)
 | |
| 		{
 | |
| 			return;
 | |
| 		}
 | |
| 		public override void ShowExpanded() {}
 | |
| 		#endregion
 | |
| 		#region Properties
 | |
| 		private static int _RtfRawMargin = 6;	// make it a little bigger than rtbitems so it can be seen
 | |
| 		/// <summary>
 | |
| 		/// Margin between the EditItem and the RtfRawItem.  Appears on the Right.
 | |
| 		/// Will allow space to draw a Change Bar on the right side of the EditItem.
 | |
| 		/// </summary>
 | |
| 		public static int RtfRawMargin
 | |
| 		{
 | |
| 			get { return _RtfRawMargin; }
 | |
| 			set { _RtfRawMargin = value; }
 | |
| 		}
 | |
| 		#endregion
 | |
| 		#region Constructors
 | |
| 		public RtfRawItem()
 | |
| 		{
 | |
| 			InitializeComponent();
 | |
| 		}
 | |
| 		//existing objects:
 | |
| 		public RtfRawItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand)
 | |
| 		{
 | |
| 			InitializeComponent();
 | |
| 			MyItemInfo = itemInfo;
 | |
| 			SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, null, false);
 | |
| 			AdjustTableWidthAndLocation();
 | |
| 			SetupEventHandlers();
 | |
| 			MyStepRTB.ReadOnly = !UserInfo.CanEdit(StepRTB.MyUserInfo, MyItemInfo.MyDocVersion); // reviewer cannot make changes to a table
 | |
| 			MyStepRTB.Enabled = UserInfo.CanEdit(StepRTB.MyUserInfo, MyItemInfo.MyDocVersion);
 | |
| 			MyStepRTB.OrigRTF = MyStepRTB.Rtf;
 | |
| 			this.Controls.Add(this._MyStepRTB);
 | |
| 			_origBitmap = GetBitmap(MyStepRTB.Rtf);  //kbr
 | |
| 		}
 | |
| 		// the following is for inserted equations:
 | |
| 		public RtfRawItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand, EditItem nextEditItem)
 | |
| 		{
 | |
| 			InitializeComponent();
 | |
| 			MyItemInfo = itemInfo; 
 | |
| 			SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, nextEditItem, false);
 | |
| 			SetupEventHandlers();
 | |
| 			if (MyItemInfo.MyContent.Text != null && MyItemInfo.MyContent.Text != "") 
 | |
| 			{
 | |
| 				AdjustTableWidthAndLocation();
 | |
| 				MyStepRTB.OrigRTF = MyStepRTB.Rtf;
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				MyStepRTB.OrigRTF = "";
 | |
| 				MyStepRTB.Size = new Size(200, 200);
 | |
| 				Width = 200;
 | |
| 				Height = 200;
 | |
| 				ItemWidth = Width;
 | |
| 				ItemLocation = TableLocation(MyStepSectionLayoutData, ItemWidth);
 | |
| 			}
 | |
| 			this.Controls.Add(this._MyStepRTB);
 | |
| 		}
 | |
| 		private void SetupEventHandlers()
 | |
| 		{
 | |
| 			MyStepRTB.TextChanged += new EventHandler(MyStepRTB_TextChanged);
 | |
| 			MyStepRTB.Resize += new System.EventHandler(MyStepRTB_Resize);
 | |
| 			MyStepRTB.Enter += new System.EventHandler(_StepRTB_Enter);
 | |
| 			MyStepRTB.HeightChanged += new Volian.Controls.Library.StepRTBEvent(_MyStepRTB_HeightChanged);
 | |
| 			MyStepRTB.ContentsResized += new ContentsResizedEventHandler(MyStepRTB_ContentsResized);
 | |
| 			MyStepRTB.SetMenu += new StepRTBMenuEvent(MyStepRTB_SetMenu);
 | |
| 			MyStepRTB.CursorKeyPress += new Volian.Controls.Library.StepRTBCursorKeysEvent(MyStepRTB_CursorKeyPress);
 | |
| 			MyStepRTB.CursorMovement += new Volian.Controls.Library.StepRTBCursorMovementEvent(MyStepRTB_CursorMovement);
 | |
| 			Click += new EventHandler(RtfRawItem_Click);
 | |
| 			MyStepRTB.Click += new EventHandler(RtfRawItem_Click);
 | |
| 		}
 | |
| 		#endregion
 | |
| 		#region EventHandlers
 | |
| 		void RtfRawItem_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			//if (MyStepPanel.DisplayItemChanging) return;
 | |
| 			MyStepPanel.SelectedEditItem = this;
 | |
| 		}
 | |
| 		private void _MyStepRTB_HeightChanged(object sender, EventArgs args)
 | |
| 		{
 | |
| 			if (this.Height != _MyStepRTB.Height + _MyStepRTB.Top + 7)  // add in 7 to make it look good // + 10)
 | |
| 			{
 | |
| 				LastMethodsPush(string.Format("_StepRTB_HeightChanged {0}", _MyStepRTB.Height));
 | |
| 				this.Height = _MyStepRTB.Height + _MyStepRTB.Top + 7;
 | |
| 				LastMethodsPop();
 | |
| 			}
 | |
| 		}
 | |
| 		public void MyStepRTB_ContentsResized(object sender, ContentsResizedEventArgs e)
 | |
| 		{
 | |
| 			// need duplicate call for this because for modifies & restores, a single call was not setting size correctly:
 | |
| 			RefreshDisplay(false);	
 | |
| 			RefreshDisplay(false);
 | |
| 		}
 | |
| 		void MyStepRTB_SetMenu(object sender, StepRTBMenuEventArgs args)
 | |
| 		{
 | |
| 			if (args.MenuGroup == null)
 | |
| 				MyStepPanel.MyStepTabPanel.MyStepTabRibbon.ClearContextMenu();
 | |
| 			else if (args.MenuGroup == "OpenContextMenu")
 | |
| 				MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetContextMenu(sender);
 | |
| 			else
 | |
| 				MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetShortCutContextMenu(args.MenuGroup);
 | |
| 		}
 | |
| 		private void _StepRTB_Enter(object sender, EventArgs e)
 | |
| 		{
 | |
| 			if (MyStepPanel.DisplayItemChanging) return;
 | |
| 			MyStepPanel.SelectedEditItem = this;
 | |
| 		}
 | |
| 		#endregion
 | |
| 		#region Methods
 | |
| 		public override void SetFocus()
 | |
| 		{
 | |
| 			MyStepRTB.Focus();
 | |
| 		}
 | |
| 		public override void SaveContents()
 | |
| 		{
 | |
| 			SaveText();
 | |
| 			SaveConfig();
 | |
| 		}
 | |
| 		public void SaveText()
 | |
| 		{
 | |
| 			if (MyStepRTB.ReadOnly) return;
 | |
| 			if (!IsDirty()) return;
 | |
| 			try
 | |
| 			{
 | |
| 				string res = MyStepRTB.Rtf.Replace("\\par\r\n}", "}");
 | |
| 				using (Item _MyItem = MyItemInfo.Get())
 | |
| 				{
 | |
| 					_MyItem.MyContent.Text = res;
 | |
| 					_MyItem.MyContent.DTS = DateTime.Now;
 | |
| 					_MyItem.MyContent.UserID = Volian.Base.Library.VlnSettings.UserID;
 | |
| 					_MyItem.DTS = DateTime.Now;
 | |
| 					_MyItem.UserID = Volian.Base.Library.VlnSettings.UserID;
 | |
| 					_MyItem.Save();
 | |
| 				}
 | |
| 				_origBitmap = GetBitmap(res);
 | |
| 				MyStepRTB.ClearUndo();
 | |
| 			}
 | |
| 			catch (Exception ex)
 | |
| 			{
 | |
| 				//MessageBox.Show("The data could not be saved.", "Object Save", MessageBoxButtons.OK, MessageBoxIcon.Information);
 | |
| 				return;
 | |
| 			}
 | |
| 		}
 | |
| 		public System.Drawing.Bitmap GetBitmap(string rtf)
 | |
| 		{
 | |
| 			Bitmap bmap = null;
 | |
| 			try
 | |
| 			{
 | |
| 				System.Drawing.Size sz = RtfRawItem.GetRtfRawSize(rtf);
 | |
| 				Volian.Controls.Library.RTF myRtb = new RTF();
 | |
| 				myRtb.Size = sz;
 | |
| 				myRtb.Rtf = rtf;
 | |
| 				bmap = new System.Drawing.Bitmap((int)sz.Width, (int)sz.Height);
 | |
| 				System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmap);
 | |
| 				myRtb.RenderClipped(gr, new System.Drawing.Rectangle(0, 0, (int)sz.Width, (int)sz.Height));
 | |
| 			}
 | |
| 			catch (Exception ex)
 | |
| 			{
 | |
| 				return null;
 | |
| 			}
 | |
| 			return bmap;
 | |
| 		}
 | |
| 		private System.Drawing.Bitmap _origBitmap = null;
 | |
| 		private bool IsDirty()
 | |
| 		{
 | |
| 			System.Drawing.Bitmap curBitmap = GetBitmap(MyStepRTB.Rtf);
 | |
| 			if (_origBitmap == null) return true;
 | |
| 			return (!compare(_origBitmap, curBitmap));
 | |
| 		}
 | |
| 		// compares 2 bitmaps by comparing pixels between the 2.
 | |
| 		private bool compare(Bitmap bmp1, Bitmap bmp2)
 | |
| 		{
 | |
| 			bool equals = true;
 | |
| 			bool flag = true;  //Inner loop isn't broken
 | |
| 
 | |
| 			//Test to see if we have the same size of image
 | |
| 			if (bmp1.Size == bmp2.Size)
 | |
| 			{
 | |
| 				for (int x = 0; x < bmp1.Width; ++x)
 | |
| 				{
 | |
| 					for (int y = 0; y < bmp1.Height; ++y)
 | |
| 					{
 | |
| 						if (bmp1.GetPixel(x, y) != bmp2.GetPixel(x, y))
 | |
| 						{
 | |
| 							equals = false;
 | |
| 							flag = false;
 | |
| 							break;
 | |
| 						}
 | |
| 					}
 | |
| 					if (!flag)
 | |
| 					{
 | |
| 						break;
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				equals = false;
 | |
| 			}
 | |
| 			return equals;
 | |
| 		}
 | |
| 		public override void IdentifyMe(bool highlight)
 | |
| 		{
 | |
| 			if (highlight)
 | |
| 				this.BackColor = Color.Gray;
 | |
| 			else
 | |
| 			{
 | |
| 				if (MyStepPanel.SelectedEditItem != null && MyStepPanel.SelectedEditItem.MyItemInfo == this.MyItemInfo)
 | |
| 					this.BackColor = MyStepPanel.ActiveColor;
 | |
| 				else
 | |
| 					this.BackColor = MyItemInfo.ItemAnnotationCount == 0 ? MyStepPanel.PanelColor : MyStepPanel.AnnotationColor;
 | |
| 			}
 | |
| 		}
 | |
| 		public static Size GetRtfRawSize(string rtf)
 | |
| 		{
 | |
| 			RichTextBox rtb = new RichTextBox();
 | |
| 			if (rtf == "New Step") rtf = "";			// if coming from the tree view/insert before or after - rtf is 'New Step'
 | |
| 			rtb.BorderStyle = BorderStyle.None;//Eliminate the border width
 | |
| 			rtb.Rtf = rtf; //  myRtf.Rtf;// set the contents
 | |
| 			rtb.AppendText(" ");// Add a space after the equation
 | |
| 			rtb.Width = 10000;// Start with a very wide richtextbox
 | |
| 			int w = rtb.GetPositionFromCharIndex(1).X;// Get the width of the equation
 | |
| 			rtb.Width = w;// Adjust the width
 | |
| 			int h = rtb.GetPositionFromCharIndex(2).Y;// Get the height of the equation
 | |
| 			return new Size(w, h);// Return the size of the Equation
 | |
| 		}
 | |
| 		void MyStepRTB_Resize(object sender, EventArgs e)
 | |
| 		{
 | |
| 			if (MyStepPanel != null && this == MyStepPanel.SelectedEditItem)
 | |
| 				ScrollToCenter();
 | |
| 		}
 | |
| 		void MyStepRTB_TextChanged(object sender, EventArgs e)
 | |
| 		{
 | |
| 			if (MyStepPanel != null && this == MyStepPanel.SelectedEditItem)
 | |
| 				ScrollToCenter();
 | |
| 		}
 | |
| 		private void MyStepRTB_CursorKeyPress(object sender, KeyEventArgs args)
 | |
| 		{
 | |
| 			MyStepPanel.StepCursorKeys(this, args);
 | |
| 		}
 | |
| 		private void MyStepRTB_CursorMovement(object sender, StepRTBCursorMovementEventArgs args)
 | |
| 		{
 | |
| 			MyStepPanel.CursorMovement(this, args.CursorLocation, args.Key);
 | |
| 		}
 | |
| 		#endregion
 | |
| 	}
 | |
| }
 |