Peter,
Thanks for quick the response. If I do implement the context menu, what possible issues will I run into ?
Also, in doing my research (in the Telerik source code), I found that there are Cut(), Copy(), Paste(), Clear() and SelectAll() methods at the
radMaskedEditBox1.MaskedEditBoxElement.TextBoxItem level.
I put together some code (BaseTextBox class) to use this and it appears to work, but I want to verify which is the correct way.
this.MaskedEditBoxElement.TextBoxItem.MouseDown +=new System.Windows.Forms.MouseEventHandler(TextBoxItem_MouseDown);
void TextBoxItem_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
RadContextMenu contextMenu = new RadContextMenu();
contextMenu.Items.Add(new Telerik.WinControls.UI.RadMenuItem()
{
Text = "Cut",
Name = "Cut"
,
Enabled = ((sender as RadTextBoxItem).SelectionLength > 0)
});
contextMenu.Items["Cut"].Click += new System.EventHandler(this.ContextMenuMenuItem_Click);
contextMenu.Items.Add(new Telerik.WinControls.UI.RadMenuItem()
{
Text = "Copy",
Name = "Copy"
,
Enabled = ((sender as RadTextBoxItem).SelectionLength > 0)
});
contextMenu.Items["Copy"].Click += new System.EventHandler(this.ContextMenuMenuItem_Click);
contextMenu.Items.Add(new Telerik.WinControls.UI.RadMenuItem()
{
Text = "Paste",
Name = "Paste"
,
Enabled = System.Windows.Forms.Clipboard.ContainsText()
});
contextMenu.Items["Paste"].Click += new System.EventHandler(this.ContextMenuMenuItem_Click);
contextMenu.Items.Add(new Telerik.WinControls.UI.RadMenuItem()
{
Text = "Delete",
Name = "Delete"
,
Enabled = ((sender as RadTextBoxItem).SelectionLength > 0)
});
contextMenu.Items["Delete"].Click += new System.EventHandler(this.ContextMenuMenuItem_Click);
contextMenu.Items.Add(new Telerik.WinControls.UI.RadMenuSeparatorItem());
contextMenu.Items.Add(new Telerik.WinControls.UI.RadMenuItem()
{
Text = "Select All",
Name = "Select All"
,
Enabled = ((sender as RadTextBoxItem).SelectionLength > 0)
});
contextMenu.Items["Select All"].Click += new System.EventHandler(this.ContextMenuMenuItem_Click);
System.Drawing.Point p = (sender as Telerik.WinControls.UI.RadTextBoxItem).PointToScreen(e.Location);
contextMenu.Show(p.X, p.Y);
}
}
void ContextMenuMenuItem_Click(object sender, EventArgs e)
{
switch (((Telerik.WinControls.UI.RadMenuItem)(sender)).Name.ToUpper())
{
case "UNDO":
//this.radMaskedEditBox1.MaskedEditBoxElement.TextBoxItem.;
break;
case "CUT":
this.MaskedEditBoxElement.TextBoxItem.Cut();
break;
case "COPY":
this.MaskedEditBoxElement.TextBoxItem.Copy();
break;
case "PASTE":
this.MaskedEditBoxElement.TextBoxItem.Paste();
break;
case "DELETE":
this.MaskedEditBoxElement.TextBoxItem.Clear();
break;
case "SELECT ALL":
this.MaskedEditBoxElement.TextBoxItem.SelectAll();
break;
default:
break;
}
}
There is one odd behavior doing it the way I did, and that is that the context menu doesn't always go away after clicking a menu item.
Thanks,
Chet