Knowledgebase Home Page  >  RapidSpell Desktop .NET  >  Misc
Search the Knowledge Base
Using RapidSpellAsYouType to add as you type spell checking to the TreeView control. (C#)
https://keyoti.com/kb/Default.aspx?ToDo=view&questId=212&catId=65

Options

Print this page
Email this to a friend

You can easily add as-you-type spell checking to the .NET TreeView control by substituting the standard editing textbox with RapidSpell Desktop's AYTTextBox.

1. Add this basic helper class to the project

public class AYTTreeViewHelper
{
 Keyoti.RapidSpell.AYTTextBox subTextBox;
 Keyoti.RapidSpell.RapidSpellAsYouType ayt;
 TreeNode editingNode;
 TreeView tv;

 public AYTTreeViewHelper(TreeView tv, IContainer components)
 {
     ayt = new Keyoti.RapidSpell.RapidSpellAsYouType(components);
     subTextBox = new Keyoti.RapidSpell.AYTTextBox();
     subTextBox.Leave += new EventHandler(subTextBox_Leave);
     subTextBox.TextChanged += new EventHandler(subTextBox_TextChanged);

     ayt.TextComponent = subTextBox;
     subTextBox.Visible = false;

     tv.Controls.Add(subTextBox);

     tv.BeforeLabelEdit += new NodeLabelEditEventHandler(tv_BeforeLabelEdit);

     tv.Disposed += new EventHandler(tv_Disposed);

     this.tv = tv;
 }

 void tv_Disposed(object sender, EventArgs e)
 {
     subTextBox.Leave -= new EventHandler(subTextBox_Leave);
     subTextBox.TextChanged -= new EventHandler(subTextBox_TextChanged);
     tv.BeforeLabelEdit -= new NodeLabelEditEventHandler(tv_BeforeLabelEdit);
 }

 void tv_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)
 {
     e.CancelEdit = true;

     editingNode = e.Node;


     Rectangle r = e.Node.Bounds;
     subTextBox.Font = e.Node.TreeView.Font;
     subTextBox.Text = e.Node.Text;
     subTextBox.Location = r.Location;
     subTextBox.Size = r.Size;
     if (subTextBox.Width + subTextBox.Left > tv.Width - 10)
  subTextBox.Width = tv.Width - 10 - subTextBox.Left;
     else if (r.Size.Width < 50)
  subTextBox.Width = 52;
     subTextBox.Visible = true;
     editingNode.Text = "";
     subTextBox.Focus();
 }

 //To autoexpand the textbox as the user types
 void subTextBox_TextChanged(object sender, EventArgs e)
 {
     Graphics gfx = subTextBox.CreateGraphics();
     SizeF sf = gfx.MeasureString(subTextBox.Text, subTextBox.Font);
     if (sf.Width + subTextBox.Left > tv.Width - 10)
  subTextBox.Width = tv.Width - 10 - subTextBox.Left;
     else
     {
  if (sf.Width > 50)
      subTextBox.Width = (int)sf.Width + 12;
  else
      subTextBox.Width = 52;
     }
     gfx.Dispose();
 }

 //Hide the ayt tb when done
 void subTextBox_Leave(object sender, EventArgs e)
 {
     editingNode.Text = subTextBox.Text;
     subTextBox.Visible = false;
 }

 
}

2. Initialize the object and pass the TreeView control, to activate it, eg. in the Form's constructor.

public partial class TreeviewForm : Form
{

 public TreeviewForm()
 {
     InitializeComponent();

     AYTTreeViewHelper helper = new AYTTreeViewHelper(treeView1, components);
    
 }
 
}

 

Where, 'treeView1' is the TreeView control to work with.  Any problems?  Please email support @ keyoti.com.

 


Related Questions:

Attachments:

No attachments were found.